我希望能够从属性文件中读取活动配置文件,以便可以在基于 Spring MVC 的 Web 应用程序中使用不同的配置文件配置不同的环境(dev、prod 等)。我知道可以通过 JVM 参数或系统属性设置活动配置文件。但我想通过一个属性文件来代替。关键是我不知道静态的活动配置文件,而是想从属性文件中读取它。看起来这是不可能的。例如,如果我在 application.properties 中有“spring.profiles.active=dev”,并允许它在 override.properties 中被覆盖,如下所示:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:/application.properties</value>
<value>file:/overrides.properties</value>
</list>
</property>
</bean>
没有在环境中拾取配置文件。我猜这是因为在 bean 初始化之前正在检查活动配置文件,因此不尊重在属性文件中设置的属性。我看到的唯一其他选项是实现一个 ApplicationContextInitializer,它将按优先级顺序加载这些属性文件(如果存在,则首先覆盖.properties,否则为 application.properties)并在 context.getEnvironment() 中设置值。有没有更好的方法从属性文件中做到这一点?