基于系统属性注入 spring bean

The*_*ode 1 java spring dependency-injection

我的项目框架的设计方式使我无法访问 Springs ApplicationContext。但是,我想根据系统属性注入 bean。如果该属性设置为 true,则注入所有 bean,否则不注入任何 bean。这有没有可能。像下面这样的东西。顺便说一句,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>
Run Code Online (Sandbox Code Playgroud)

简而言之,该属性是使用 PropertyPlaceHolderConfigurer 读取的。所有其他 bean 应根据值 OBJECT_INSTANCE_ID 加载。该属性在位于 /etc/../system.property 的属性文件中定义

Mit*_*hun 5

您可以使用 Spring 配置文件来实现此功能:

<beans profile="dev">
    <bean id="devConfig" class="<yourClassName>" />
</beans>
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,devConfig只有在dev激活配置文件时才会构造 bean 。您可以按如下方式激活配置文件:

使用注解:

@ActiveProfiles("dev")
Run Code Online (Sandbox Code Playgroud)

使用系统属性:

-Dspring.profiles.active=dev
Run Code Online (Sandbox Code Playgroud)