我只是想知道是什么优先顺序是指定多个 Spring 活动配置文件时的顺序.
说我想要default
配置文件处于活动状态,但dev
当有多个相同的元素(例如 bean)可供选择但具有不同的配置文件时,配置文件将覆盖它...
比如说我有两个PropertySourcesPlaceholderConfigurer
豆配置"default"
and "dev"
重视环境概况。
如果我使用以下配置文件激活:-Dspring.profiles.active="default,dev"
会不会dev
配置文件覆盖default
one?
如果不是,如何实现上述行为?
配置文件中的顺序spring.profiles.active
系统属性并不重要。 “优先级”由 bean 的声明顺序定义,包括特定于配置文件的 bean,以及最后一个 bean 定义获胜.
使用你的例子,如果-Dspring.profiles.active="default,dev"
被使用时,props
豆子在default
此处将使用 profile,只是因为它是该 bean 的最后一个活动定义:
<beans profile="dev">
<bean id="props" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="location" value="classpath:META-INF/dev.properties"/>
</bean>
</beans>
<beans profile="default">
<bean id="props" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="location" value="classpath:META-INF/default.properties"/>
</bean>
</beans>
颠倒豆子的顺序,然后dev
版本将被使用,无论配置文件如何排序spring.profiles.active
.
请注意,我没有使用<context:property-placeholder/>
因为它不允许您显式指定 bean id,所以我不确定如果使用多个 bean id,它会表现出什么行为。我想象这些属性将被合并,以便两者定义的属性将使用最后一个定义,但特定于每个文件的属性将保持不变。
否则,根据我的经验,您通常会按以下顺序定义 bean:
- “默认”bean 定义,不特定于配置文件
- 覆盖特定于环境的配置文件中的 bean 定义
- 覆盖特定于测试的配置文件中的 bean 定义
这样,如果与其他配置文件结合使用,测试配置文件 bean 将获胜;否则,您可以根据配置文件使用特定于环境的 bean 或默认 bean。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)