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しなれば正常に動きません。


--------------------------
システム開発のご要望・ご相談はこちらから
--------------------------
【この技術ブログを読んだエンジニアの皆様へ】
カサレアルブログをお読みいただき、ありがとうございます!

私たちは、常に新しい技術に挑戦し、ユーザーのニーズに応えるサービスを提供しています。
もし、当社の技術への情熱や、会社・チーム・社員の雰囲気に共感いただけたなら、
ぜひ私たちと一緒に働きませんか?
現在、株式会社カサレアルでは事業拡大に伴い、新たな仲間となるエンジニアを積極的に募集しています。

少しでも興味をお持ちいただけましたら、まずは弊社のことを知っていただけると嬉しいです。
▼採用サイト
https://www.casareal.co.jp/recruit/career
▼社員インタビュー
https://hrmos.co/pages/casareal/jobs/0000016
▼エンジニアの仲間になる! エントリーはこちらから
https://hrmos.co/pages/casareal/jobs

皆様のエントリーを心よりお待ちしています!

AWS SAM CLI と localstack を利用して Lambda をローカル実行してみよう
Laravelのミドルウェアで入力項目のデフォルト値を設定する

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

コメント ※

名前 ※

メール ※

サイト