2011-03-23 4 views
11

property-placeholder에서로드 된 속성을 사용하여 컨텍스트 가져 오기를 동적으로 만들 수 있습니까?가져 오기/Bean 참조의 속성 자리 표시 자

<context:property-placeholder location="classpath*:/enterprise.properties"/> 
<import resource="classpath*:/Fsb${jdbc.ctxType?:Jdbc}-context.xml"/> 

등록

jdbc.ctxType=JTA 

그래서이 방법은 내가 속성을 기반으로로드 컨텍스트 파일의 유형을 변경할 수 있습니다 파일.

또한 bean ref name을 동적으로 만들기 위해 동일한 작업을 수행 할 수 있습니까?

<bean id="personBusinessService" class="com.foo.PersonBusinessServiceImpl" 
      p:personUidDataService-ref="personUidDataService${personUidDataService.sib?:Api}" 
      p:identifierLookupSearchService-ref="identifierLookupSearchService${identifierLookupSearchService.sib?:Api}" 
      p:contactPointBusinessService-ref="contactPointBusinessService${contactPointBusinessService.sib?:Api}" 
/> 

속성 --- 심판에 대한 재산의 예를 업데이트 --------------------

personUidDataService.sib=Stub 

제이

파일

addressLookupSearchService.sib=DaoMock 
:

----------------------

나는 다음과 같은 항목과 속성 파일을 만든 그런

I 스프링 컨텍스트 파일에서 다음과 같은 구성을 가지고 :

<context:property-placeholder location="classpath*:/simple.properties"/> 

<!-- EntityManager will be injected into DAO by JPA annotations --> 
<bean id="addressSearchDao" class="com.foo.AddressSearchDaoImpl"/> 

<bean id="addressSearchDaoMock" class="com.foo.MockAddressSearchDaoImpl"/> 

<bean id="addressLookupSearchService" class="com.foo.AddressLookupSearchServiceImpl" 
    p:baseDao-ref="addressSearch${addressLookupSearchService.sib?:Dao}"/> 

그리고 addressSearch $는 {addressLookupSearchService.sib는 : 다오은} addressSearchDao의 빈 ID하더라도, 그것은 항상 기본값을 작동하지 않습니다 내 속성은 addressSearchDaoMock으로 설정해야한다고 말합니다.

내가 뭘 잘못하고 있다고 생각하나요?

답변

13

this과 비슷한 질문입니다.

Imports

는 콩 (재산-자리) 생성하기 전에 를 해결하는, 그래서 당신은 당신이 import 문에 사용할 속성을 정의하는 특성 파일을 사용할 수 없습니다. 이 경우 속성을 system property (-Djdbc.ctxType=JTA)으로 설정해야합니다 (단락 참고 참조).

그러나이 bean 정의에서 속성의 파일 속성을 사용하여 잘 작동 - 즉 그들이 :-)

업데이트위한 작업은 다음과 같습니다 스프링 3.1 이후 Unified Property Management는 (감사 @Jay 블 랜턴 심지어 수입에 속성을 사용할 수 있습니다 코멘트에서 이것을 언급).

+0

제안에 감사드립니다 ... 나는 수입 정보를보고 있습니다. 속성을 사용하는 빈 참조에 관해서는, 내가하려고하는 것에 대한 예제를 보여주기 위해 질문을 업데이트했습니다 ... 그것은 나를 위해 작동하지 않는 것 같습니다. –

+0

답변을 찾은 것 같습니다. 나는 구문이 있다고 생각 했는가? : 디폴트 값. 그러나 작동 한 구문은 $ {addressLookupSearchService.sib : Dao} 였지만 물음표는 사용하지 않았습니다. 이 JIRA를 기반으로 - https://jira.springsource.org/browse/SPR-4785. –

+0

잘 작동하는 것이 좋습니다. 업데이트 질문으로 인해 질문의 초점이 조금 바뀌 었습니다 - 먼저 디폴트 값을 사용하여 특별한 문제를 알지 못했습니다. – FrVaBe

-2

예, 가능합니다. 가져 오기 및 삽입에서 표현식을 사용할 수 있습니다.