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

ams*_*ams 20 java spring

鉴于:

<beans ... namespace decelerations>
     <bean id="foo" class="com.example.foo" />
     <beans profile="abc">
         <bean id="bar" class="com.exmaple.bar" />
     </beans>
</bean>
Run Code Online (Sandbox Code Playgroud)

foo注册的个人资料的名称是什么?有没有办法在另一个配置文件定义中覆盖foo?如果未明确指定配置文件,是否在spring中有默认配置文件的名称.

Sol*_*ris 23

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>
Run Code Online (Sandbox Code Playgroud)

命令行:

-Dspring.profiles.default=production
Run Code Online (Sandbox Code Playgroud)

环境变量:

export spring_profiles_default=production
Run Code Online (Sandbox Code Playgroud)

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


Jea*_*ond 5

Foo只是在没有配置文件的情况下注册,无论您在该环境中使用的配置文件如何,它都将始终实例化.如果它们位于不同的集合中,Spring则只允许在XML文件中创建多个bean,因此如果它不在具有配置文件的标记内,我认为不可能覆盖该bean .id<beans>Foo<beans>

如果没有定义配置文件,Spring将使用名为的配置文件default.但是,bean不在<beans>具有配置文件的标签内的那个不会在该配置文件下注册.它只表示如果你有类似下面的内容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>
Run Code Online (Sandbox Code Playgroud)

  • AbstractEnvironment和子类现在注册一个名为字面"默认"的保留默认配置文件,这样如果用户没有任何操作,将注册针对"默认"配置文件定义的bean - 如果没有显式激活其他配置文件.https://jira.springsource.org/browse/SPR-8203 (3认同)