去年書いた記事で使用していたクラスがDeprecatedになっていたので、新しく更新します。
前回の記事を書いた時にアップデートしておけばよかったです。
変更点
- ConfigFileApplicationContextInitializer から ConfigDataApplicationContextInitializer に変更
- 設定ファイルの設定方法が変更(今回の記事には影響なし)
こちらの記事での記載の通り、SpringBoot2.4から設定ファイルの設定方法が変わりました。
ConfigFileApplicationContextInitializer では旧設定で動きますが、この機会に ConfigDataApplicationContextInitializer に変えつつ新設定に変更してみてください。
なお、今回の記事の内容では直接影響はありません。GitHubにはその対応を含めてアップロードしているので、興味があればソースコードも見てください。
ゴール
設定ファイルを読み込めていることを示すテストを書けるようにします。
環境
- Java
- 15
- org.springframework.boot
- 2.4.4
ソースコード
設定ファイル
下記のディレクトリに、設定ファイルを記載します。
src/test/resources/application.yml
app: config: appName: "Kirimaru"
設定ファイルを読み込むJavaファイル
ConfigurationPropertiesアノテーションを使用します。prefixをつけることで、特定の階層以降を読み込むことができるので、可読性が上がるのでオススメです。
下記ディレクトリにJavaファイルを格納する。
{ContextRoot}/config/CoreProperties.java
import lombok.Getter; import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; @Getter @Setter @ConfigurationProperties(prefix = "app.config") public class CoreProperties { private String appName; }
テストコード
SpringJunitConfig
アノテーションと、EnableConfigurationProperties
アノテーションを使用します。
設定ファイルから読み込ませて、目的通り読み込んでいることを確認する必要があるので、SpringJunitConfig
のイニシャライザにConfigDataApplicationContextInitializer.class
を指定する必要があります。
また、必要な設定ファイルを読み込ませるために、EnableConfigurationProperties
に読み込ませたい設定ファイルを指定します。今回の例ではCoreProperties.class
です。
{TestのContextRoot}/config/CorePropertiesTests.java
@SpringJUnitConfig(initializers = ConfigDataApplicationContextInitializer.class) @EnableConfigurationProperties({CoreProperties.class}) class CorePropertiesTests { @Autowired CoreProperties coreProperties; @Test void test_01(){ assertThat(coreProperties.getAppName()).isEqualTo("Kirimaru"); } }
GitHubのソースコード
- 対象ファイル
終わりに
既に前回の記事の時にはDeperecatedになっていましたが、アップデートしていないと気づけませんね。
旧設定は旧設定で大事ではありますが、バージョンをしっかり明記することで読者に正確な情報を提供できるようにしたいです。
この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。
参考記事
Baeldung www.baeldung.com
公式ヘルプ github.com
関連記事
SpringBootでpropertiesやymlの設定ファイルが読み込めることのテストを書く【Java】(前回の記事) nainaistar.hatenablog.com
Spring Profilesで環境ごとの設定ファイルを読み込む(SpringBoot2.4の変更も記載) nainaistar.hatenablog.com