【发布时间】:2017-05-04 01:35:54
【问题描述】:
我有一个使用 application-local.properties 文件中定义的值的类,我认为它会被使用,因为 application-properties 有`spring.profiles.active=local
当我在 IntelliJ 中启动时,我在控制台日志中看到了这一点:
Loaded config file 'file:.../build/resources/main/application.properties' (classpath:/application.properties)
2016-12-18 20:10:17.596 DEBUG 29999 --- [ restartedMain] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'file:.../build/resources/main/application-local.properties' (classpath:/application-local.properties)`
Skipped (empty) config file 'file:...build/resources/main/application-local.properties' (classpath:/application-local.properties) for profile local
它说它跳过了空配置文件,但是当我检查“build/resources/main/application-local.properties”时,我看到了其中的值。
但是,当我在 IntelliJ 中将以下类作为 Spring Boot 应用程序运行时,它没有这些属性。它抛出一个空指针,因为它们是空的:
@Value("${myapp.ApiKey}")
private String apiKey;
@Value("${myapp.ApiSecret}")
private String apiSecret;
@Value("${myapp.user}")
private String user;
在应用程序配置中,我尝试使用活动配置文件、程序参数和环境变量。
但是,如果我从命令行运行:
java -jar -Dspring.active.profiles=local build/libs/myjar-0.0.1-SNAPSHOT.jar
然后它工作得很好。我确定这以前可以正常工作,但不确定 IntelliJ 版本是否相同。有关如何使用正确版本的 application.properties 的任何提示?
【问题讨论】: