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 中是否有默认配置文件的名称。

4

2 回答 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

如果设置了活动配置文件,它将覆盖默认值。

于 2013-01-21T16:47:15.167 回答
5

Foo只是在没有配置文件下注册,无论您在该环境中使用什么配置文件,它都会被实例化。如果它们在不同的集合中,Spring只允许在一个XML文件中创建多个相同的bean,所以我认为如果它不在带有配置文件的标签内,则不可能覆盖bean。id<beans>Foo<beans>

如果没有定义配置文件,Spring 将使用名为default. 但是,bean不在<beans>带有配置文件的标签内的 a 将不会在该配置文件下注册。这仅意味着如果您有类似以下内容XML并且未提供配置文件,则将加载具有默认配置文件的 bean 以及没有配置文件的 bean。

<beans ... namespace decelerations>
     <bean id="foo" class="com.example.foo" />
     <beans profile="default">
         <bean id="bar" class="com.exmaple.bar" />
     </beans>
</bean>
于 2013-01-21T16:59:10.263 回答