如何在Spring中指定bean默认注册的配置文件?

20

给定:

<beans ... namespace decelerations>
     <bean id="foo" class="com.example.foo" />
     <beans profile="abc">
         <bean id="bar" class="com.exmaple.bar" />
     </beans>
</bean>

foo注册的配置文件名称是什么?有没有一种方法可以在另一个配置文件定义中覆盖foo?在Spring中,当没有明确指定配置文件时,默认配置文件的名称是什么。


1
可能是Spring 3.1中的默认配置文件的重复问题。 - Markus Malkusch
2个回答

24

在Spring中,默认的配置文件是"default",详情请查看:https://jira.springsource.org/browse/SPR-8203

你可以通过以下方式在web.xml中更改默认配置文件:

<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>production</param-value>
</context-param>

命令行:

-Dspring.profiles.default=production

环境变量:

export spring_profiles_default=production

如果设置了活动配置文件,则会覆盖默认配置。


5
Foo是没有注册在任何配置文件中的,因此不管你在哪个环境下使用哪个配置文件,它都会被实例化。在一个XML文件中,如果多个bean具有相同的id,则只有它们位于不同的<beans>集中时才允许创建,所以我认为如果Foo bean不在带有配置文件的<beans>标签中,就不能覆盖它。
如果未定义任何配置文件,Spring将使用名为default的配置文件。但是,如果一个bean不在带有配置文件的<beans>标签中,它将不会在该配置文件下注册。这只意味着,如果你有像下面这样的XML代码,且没有提供配置文件,则默认配置和没有配置的bean都将被加载。
<beans ... namespace decelerations>
     <bean id="foo" class="com.example.foo" />
     <beans profile="default">
         <bean id="bar" class="com.exmaple.bar" />
     </beans>
</bean>

你有这个引用吗:“如果没有定义配置文件,Spring 将使用名为 default 的配置文件。”? - Marko Vranjkovic
3
AbstractEnvironment类和其子类现在注册了一个名为"default"的保留默认配置文件。如果用户没有采取任何行动,针对"default"配置文件定义的bean将被注册,前提是没有显式地激活其他配置文件。https://jira.springsource.org/browse/SPR-8203 - Jean-Philippe Bond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接