Spring Bootのapplication.propertiesの値を取得する方法
■application.propertiesに任意の文字を設定する
今回は「str=test;」とする ※変数には大文字が設定できないので注意
■additional-spring-configuration-metadata.jsonを作成して、警告を解除
application.propertiesに任意の文字を設定すると警告が出るので、「str is an unknown property.」を右クリック⇒クイックフィックス⇒完了を押下
resources配下に「META-INF/additional-spring-configuration-metadata.json」が作成される
プロジェクトをクリーンすると警告は解除される
■application.propertiesに設定した文字列のGetter、Setterメソッドを持つ任意のクラスを作成
package com.example;
import org.springframework.boot.context.properties.ConfigurationProperties;
import lombok.Data;
// LombokのDataアノテーションでGetter、Setterメソッドを設定
@Data
// ConfigurationPropertiesでapplication.propertiesと紐づける
@ConfigurationProperties
public class Properties {
private String str;
}
■JavaConfigを作成
AppConfig.javaをJavaConfigとする
javaをJavaConfigの作成方法はこちら ⇒ Bean定義ファイルの作成方法(JavaConfig)
package com.example;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
// JavaConfig用のクラスとして「@Configuration」を付与
@Configuration
public class AppConfig {
@Bean
Properties properties() {
return new Properties();
}
}
■メインクラス
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Import;
@SpringBootApplication
@Import(AppConfig.class)
public class SampleApplication {
public static void main(String[] args) {
// DIコンテナ
ApplicationContext context = SpringApplication.run(SampleApplication.class, args);
// DIコンテナからPropertiesクラスのインスタンスを取得
Properties properties = context.getBean(Properties.class);
// Propertiesクラスのゲッターメソッドでapplication.propertiesに設定した「str」の値を取得
var resultStr = properties.getStr();
System.out.print(resultStr);
}
}