我希望能够从属性文件中读取活动配置文件,以便在基于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,按优先级(如果存在override.properties,则首先加载它,否则加载application.properties),加载这些属性文件并在context.getEnvironment()中设置值。是否有更好的方法从属性文件中解决这个问题?