2012-09-07 4 views
2

시스템 속성을 통해 스프링 별칭 구성을 변경할 수 있는지 여부를 알아 내려고합니다. 내가 좋아하는 것 시스템 속성으로 봄 빈 별칭을 변경하십시오.

<beans> 
    <bean id="beanOne" ... /> 
    <bean id="beanTwo" ... /> 
    <bean id="beanThree" ... /> 
    <alias name="beanOne" alias="beanToUse" /> 

    <bean id="consumer" ...> 
     <constructor-arg ref="beanToUse" /> 
    </bean> 
</beans> 

는, 예를 들어 JVM 속성을 사용 할 수 있도록 : 구성의

별명에 대해 다른 bean을 선택하려면 -Duse=beanThree을 입력하십시오.

불행하게도 <alias name="#{systemProperties.use}" alias="beanToUse" />NoSuchBeanDefinitionException 예외 :(

어떤 제안?

+0

이 스레드를 확인하셨습니까? http://stackoverflow.com/questions/317687/inject-property-value-into-spring-bean – Chris

+0

예.하지만 속성을 사용하여 인수 자체를 검색하는 것은 여기에있는 문제가 아닙니다. 물론 해당 기술을 사용하면 그 별칭 대신에 사용되는 프록시를 소개합니다 -하지만 제가 말했듯이 그것은 질문이 아닙니다. – pagid

답변

2

을 던지는 똑바로 앞으로 솔루션을 사용 했습니까 당신은

<beans> 
    <bean id="beanOne" ... /> 
    <bean id="beanTwo" ... /> 
    <bean id="beanThree" ... /> 
    <beans profile="A"> 
     <alias name="beanOne" alias="beanToUse" /> 
    </beans> 

    <beans profile="B"> 
     <alias name="beanTwo" alias="beanToUse" /> 
    </beans> 

    <bean id="consumer" ...> 
     <constructor-arg ref="beanToUse" /> 
    </bean> 
</beans> 

? 스프링 3.1 프로파일을 사용하려고 및 시스템 속성 -Dspring.profiles.active=A를 통해 선택 프로필에서 별칭을 시도하지 않았지만 각 프로필에 대체 beanToUse 정의를 사용할 수 있습니다.

<beans> 
    <beans profile="A"> 
     <bean id="beanToUse" ... defined as beanOne ... /> 
    </beans> 

    <beans profile="B"> 
     <bean id="beanToUse" ... defined as beanTwo .../> 
    </beans> 

    <bean id="consumer" ...> 
     <constructor-arg ref="beanToUse" /> 
    </bean> 
</beans> 
+0

Btw. 좋은 점은' ...'이 예상대로 작동하고 결국 내가 의도 한 행동으로 이어지는 것입니다. 고마워요 :) – pagid

0

여기에는 SpEL을 사용하여이를 수행하는 또 다른 방법이 있습니다. beanid가있는 DataStrategy 유형의 두 가지 구현 testDataStrategy 및 realDataStrategy

Java 프로젝트의 속성 파일에서 'data.strategy'속성을 설정하여 bean 사이에서 선택할 수 있습니다.

<bean id="myBeanId" class="com.some.path.MyBeanClass" > 
    <property name="dataStrategy" value="# {'${data.strategy}'.equalsIgnoreCase('TEST_DATA') ? testDataStrategy : realDataStrategy}" /> 
</bean> 
관련 문제