かなり初歩的な話ですが、引っかかってしまったので備忘録として紹介します…
状況
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しなれば正常に動きません。