如何在Spring中使用application.properties设置配置文件?

我想使用application.properties文件设置配置文件,条目为:

mode=master 

如何在我的context.xml文件中设置spring.profiles.active? init-param仅适用于web.xml上下文。

  spring.profiles.active "${mode}"  

有几种方法可以更改活动配置文件,其中任何一种都不直接来自属性文件。

  • 您可以像在问题中一样使用
  • 您可以在应用程序启动时提供系统参数-Dspring.profiles.active="master"
  • 您可以使用context.getEnvironment().setActiveProfiles("container");以编程方式从ApplicationContextsetActiveProfiles(String...)获取ConfigurableEnvironment context.getEnvironment().setActiveProfiles("container");

您可以使用ApplicationListener来监听上下文初始化。 关于如何在这里做到这一点的解释 。 您可以使用ContextStartedEvent

 ContextStartedEvent event = ...; // from method argument ConfigurableEnvironment env = (ConfigurableEnvironment) event.getApplicationContext().getEnvironment(); env.setActiveProfiles("master"); 

您可以根据需要从属性文件中获取值"master"

您可以使用环境变量,系统变量(JVM或应用程序的-D选项)或将其放入JNDI(java:comp / env /。但是您不能将它放在属性文件中,因为在此之前需要它读取特定属性文件。

@Profile javadocs中有更多信息。

另一种解决方案是创建自己的ApplicationContextInitializer实现,该实现读取特定文件并激活给定的配置文件。