我的项目框架的设计方式使我无法访问Springs ApplicationContext。但是,我想基于系统属性注入bean。如果该属性设置为true,则注入所有bean,否则注入none。这是可能的吗?像下面这样的东西。 BTW,Spring版本是3.0
<!-- all beans -->
<bean></bean>
<bean></bean>
<bean></bean>
<bean class ="org.springframework...PropertyPlaceHolderConfigurer>
<property name = "properties"
<value>
OBJECT_INSTANCE_ID =0
</value>
</property>
<bean>
简而言之,使用PropertyPlaceHolderConfigurer读取属性。所有其他bean应根据值OBJECT_INSTANCE_ID加载。该属性在位于/ etc /../ system.property
的属性文件中定义答案 0 :(得分:4)
您可以使用Spring配置文件来实现此功能:
<beans profile="dev">
<bean id="devConfig" class="<yourClassName>" />
</beans>
在上面的示例中,仅当devConfig
配置文件被激活时才会构造dev
bean。您可以按如下方式激活配置文件:
使用注释:
@ActiveProfiles("dev")
使用系统属性:
-Dspring.profiles.active=dev
答案 1 :(得分:0)
如果您选择Java Configs和Spring Boot等现代方法,可以使用Spring Boot引入的@ConditionalOnProperty annotation作为条件注入之一。