@Valueアノテーションを使ってプロパティの値をインジェクションする場合、デフォルトではプレフィックスに${を指定する必要がある。
Javaで書いてる場合は問題ないけど、Kotlinを使うと文字列内の$は変数を展開するために使うので下のコードのようにエスケープしないとダメで残念な感じになります。
@Value("\${target.host}") private val host:String
プレフィックスはこんな感じに、PropertySourcesPlaceholderConfigurerを使うことで変更できます。
@Bean open fun propertyConfigurer() : PropertySourcesPlaceholderConfigurer { val propertySourcesPlaceholderConfigurer = PropertySourcesPlaceholderConfigurer() propertySourcesPlaceholderConfigurer.setPlaceholderPrefix("&{") eturn propertySourcesPlaceholderConfigurer }
これで、$のエスケープが不要になります。
@Value("&{target.host}") private val host:String
参考にした情報です。
stackoverflow.com
※ConfigurationPropertiesを使えばValueアノテーション使わなくていいので、単純にこの問題を回避できる。
そもそも、プロパティの値を保持するBeanはJavaで書いたほうが幸せになりそうな気もする。