在IntelliJ 2016.3中加载spring- {env} .properties

时间:2016-12-19 02:55:03

标签: intellij-idea spring-boot

我有一个带有三个属性文件的Spring Boot属性: enter image description here

我有一个使用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应用程序运行时,以下类没有这些属性。它抛出一个空指针,因为它们是null:

@Value("${myapp.ApiKey}")
private String apiKey;

@Value("${myapp.ApiSecret}")
private String apiSecret;

@Value("${myapp.user}")
private String user;

在应用程序配置中,我尝试使用Active Profiles,Program Arguments和Environment Variables。

但是,如果我从命令行运行:

java -jar -Dspring.active.profiles=local  build/libs/myjar-0.0.1-SNAPSHOT.jar

然后它工作得很好。我确信这在以前工作,但不确定IntelliJ版本是否相同。有关如何使用我的application.properties的正确版本的任何提示?

1 个答案:

答案 0 :(得分:-1)

您使用的是哪个春季启动版?如果您使用的是最新版本,那么

-Dspring.profiles.active=local

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-set-active-spring-profiles