
Springの@Valueが動作しない
かなり初歩的な話ですが、引っかかってしまったので備忘録として紹介します…
状況
Springで利用する変数fooの値をapplication.ymlに記載しようとしたところ、
 なぜかfooの値が反映されない状態で動作していました。
class Bar{
    @Value("\${app.foo}")
    lateinit var foo: String
}
app: foo: toto
原因・対応
原因はBarクラスをBean化していなかったためでした。
@Bean
// ↑これ、@Componentでも@Serviceでも@Contolollerでももちろん問題なし
class Bar{
  @Value("\${app.foo}")
  lateinit var foo: String
}公式にもあるとおり、@ValueアノテーションはBeanに対して作用します。
 そのため、元のクラスをDIしなれば正常に動きません。
 
 
