根据系统属性注入spring bean

时间:2015-03-09 11:01:05

标签: java spring dependency-injection

我的项目框架的设计方式使我无法访问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

的属性文件中定义

2 个答案:

答案 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作为条件注入之一。