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

2022-09-02 09:53:23

鉴于:

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

foo注册的个人资料的名称是什么?有没有办法在另一个配置文件定义中覆盖 foo?在春季,如果未显式指定配置文件,则是否有默认配置文件的名称。


答案 1

弹簧中的默认配置文件是“默认”,请参阅: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

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


答案 2

Foo只是在没有配置文件下注册,无论您在该环境中使用哪种配置文件,它都将始终被实例化。 只允许在一个文件中创建多个bean,如果它们位于不同的集合中,那么我认为如果bean不在具有配置文件的标签中,则不可能覆盖bean。SpringXMLid<beans>Foo<beans>

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

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

推荐