スプリングブートアプリケーションがあり、application.properties
ファイルからいくつかの変数を読み取りたい。実際、以下のコードはそれを行います。しかし、この代替方法には良い方法があると思います。
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
prop.load(input);
gMapReportUrl = prop.getProperty("gMapReportUrl");
} catch (IOException ex) {
ex.printStackTrace();
} finally {
...
}
@PropertySource
を使用して、構成をプロパティファイルに外部化できます。プロパティを取得する方法はいくつかあります。
1。 @Value
をPropertySourcesPlaceholderConfigurer
とともに使用して、${}
の@Value
を解決することにより、フィールドにプロパティ値を割り当てます:
@Configuration
@PropertySource("file:config.properties")
public class ApplicationConfiguration {
@Value("${gMapReportUrl}")
private String gMapReportUrl;
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
return new PropertySourcesPlaceholderConfigurer();
}
}
2。 Environment
:を使用してプロパティ値を取得します
@Configuration
@PropertySource("file:config.properties")
public class ApplicationConfiguration {
@Autowired
private Environment env;
public void foo() {
env.getProperty("gMapReportUrl");
}
}
これが役立つことを願っています
私は次の方法を提案します:
@PropertySource(ignoreResourceNotFound = true, value = "classpath:otherprops.properties")
@Controller
public class ClassA {
@Value("${myName}")
private String name;
@RequestMapping(value = "/xyz")
@ResponseBody
public void getName(){
System.out.println(name);
}
}
ここで、新しいプロパティファイル名は「otherprops.properties」であり、プロパティ名は「myName」です。これは、Spring Bootバージョン1.5.8でプロパティファイルにアクセスする最も簡単な実装です。
私は次のクラスを作成しました
@Configuration
public class ConfigUtility {
@Autowired
private Environment env;
public String getProperty(String pPropertyKey) {
return env.getProperty(pPropertyKey);
}
}
application.propertiesの値を取得するために次のように呼び出されます
@Autowired
private ConfigUtility configUtil;
public AppResponse getDetails() {
AppResponse response = new AppResponse();
String email = configUtil.getProperty("emailid");
return response;
}
ユニットがテストされ、期待どおりに動作しています...