我想使用Spring Boot 2.0.0使用两个不同的弹簧配置文件proda
和prodb
(在application.properties
中设置配置文件)。
在Spring Boot中,您还可以在application.properties中设置活动配置文件,如以下示例所示:
spring.profiles.active=production
现在我只想让proda
工作。我有三个不同的属性文件:
application-proda.yml
database:
conn:
blablabla: blablaqwer
和
application-prodb.yml
database:
conn:
blablabla: albalbrewq
以及
application.properties
spring.profiles.active=proda
在IDE中运行应用程序,或使用maven将其打包为jar
时,一切都按预期工作(设置了活动配置文件[proda]
,加载了application-proda.yml
)。在(例如@PostConstruct
)某个类中调用它:
System.out.println(Arrays.toString(env.getActiveProfiles()));
将导致
[proda]
但是当使用maven构建为war
并将其部署到Tomcat服务器时,将导致相同的代码
[]
并且未加载application-proda.yml
。这意味着应用程序没有读取application.properties
,因此出于某种原因没有加载活动配置文件proda
。
但已完成的war
包含WEB-INF\classes\
下的所有必需文件。
我已经看到了一些解决方案,您可以将-Dspring.profiles.active=proda
设置为命令行参数,或者在web.xml
中设置有效配置文件,但这不是我需要的,因为我不喜欢#39;有一个web.xml
,我想使用Spring Boot功能并在application.properties
中声明个人资料。它应该像在IDE中一样工作,或者打包为带有maven的jar
。