2014-07-15 1 views
1

실행시에 바인드 할 필요가있는 bean가 있습니다. 등록 정보 파일에서constructor-arg 봄의 프로퍼티로부터의 참조

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
     <constructor-arg ref="${requiredBean:mysql}"/> 
</bean> 

<bean id="mysql" class="xxx.xxx.xxxxxx"> 
</bean> 

<bean id="mongo" class="xxx.xxx.xxxxxx"> 
</bean> 

나는 몇 가지 이유에 속성 파일에서 requiredBean 스프링에 의해 포착되지 인해

requiredBean=mongo 

는하지만 (특성 파일이 올바르게 구성되어 재산 및 기타 모든 추가 속성이 제대로로드되지 않는 경우).

나는 constructor aa ref에 대한 arg를 선언 할 때 사용한 구문이 옳다는 것을 알고 싶습니다. 또는 선언 할 다른 방법이 있는지 알고 싶습니다.

Pls이 문제를 해결하는 데 도움을줍니다.

질문이 명확하지 않은 경우 알려주십시오.

+0

정보가 충분하지 않습니다. 읽히는 속성 파일의 경로와 읽지 않은 속성 파일의 경로를 게시하십시오. –

+0

특성 파일을 잘 읽습니다. 속성 파일의 다른 모든 속성들이이 하나의 속성을 제외하고 반영됩니다. – vamsi

+0

'' –

답변

1

올바른 속성 (맞춤법 오류 없음)을 언급하고 있다고 확신하는 경우 (.properties의 내용에서 이미 언급했듯이) 문제는 속성 자체가 아니라 다른 것이됩니다. 기본값을 제거해보십시오. :::: java.lang.IllegalArgumentException : 문자열 값 "$ {XYZ}"의 자리 표시 자 'XYZ'를 해결할 수 없습니다. 이 예외를 throw하지 않으면 issue는이 bean과 전혀 관련이 없습니다.

+0

기본값을 제거했으며 "placeholder 'requiredBean'을 해결할 수 없습니다 '예외가 발생합니다. 하지만 모든 속성을 동일한 파일에서 읽으므로 변경해야 할 사항이 있습니다. – vamsi

+0

두 가지 모두에서 myprop라고 말하고 속성 이름을 변경하도록 요청할 수 있습니까? myprop = mongo 및 . 이 requiredBean이 키워드인지 궁금합니다. – Puneetsri

+0

안녕하세요 고맙습니다, 확실히 나를 위해 일했다 .. 실제로 나는 그것을 해결하는 몇 가지 키워드가 될 수도있는 "entity.datasource"를 사용했다 – vamsi