有没有办法在applicationContext.xml文件中启用或禁用Spring bean定义?

use*_*374 8 java spring spring-mvc

有没有办法在应用程序上下文中启用禁用 java bean定义?

<bean id="enBean" classs="com.en.bean.BeanName">
   <property name="prop1"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

或者,有没有办法加载在应用程序上下文中有条件定义的bean ?

Jig*_*shi 10

@Profile在春季3.1中有一个新功能可以完成这项工作

这里开始

Spring 3.1引入了环境概要的概念.一个常见的用例是设置开发,QA和生产环境之间不同的bean.一个典型的例子是开发中的独立DataSource与在生产中从JNDI查找DataSource.另一个例子是用于分析的bean配置文件,可以轻松打开或关闭.您可以在XML中的beans元素上添加profile属性,或在代码中添加@Profile注释.请注意,可以将Spring bean分配给多个配置文件.

<beans profile="dev">
    ...
</beans>
@Profile("dev")
public class Bean {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这些配置文件可以通过spring.profiles.active属性激活,该属性可以通过环境变量,JVM系统属性,web.xml或JNDI中的Servlet指定.也可以使用Environment.setActiveProfiles(String ...)通过代码激活这些配置文件.为了使bean配置文件有效,现在允许在Spring XML中嵌套bean元素,尽管仅限于文件的末尾.请注意,建议在环境之间保持bean拓扑尽可能接近,这样您的应用程序就可以跨环境进行适当的测试.您还可以使用Environment.containsProperty()方法搜索不同属性源中的属性.此属性解析也适用于XML bean定义中的$ {placeholder}变量.