2016-10-04 3 views
1

이것은 내 속성 파일입니다 :Spring은 중첩 된 SpEL 표현식을 지원합니까?

base1.jdbc.password=pass1 base2.jdbc.password=pass2 base3.jdbc.password=pass3.

는 나도 base1에게 또는 base2 또는 base3 할 수있는 데이터베이스 %%라는 환경 변수를 가지고있다.

어떻게 환경 변수에 저장된 데이터베이스의 암호 속성을 읽을 수 있습니까? 나는 다음과 같이 생각했다 :

<property name="password" value="${#{systemProperties['DATABASE']}.jdbc.password}"/>.

정확한지 확실하지 않습니다.

+0

좋아 보인다. 오류, 문제점 또는 문제점은 무엇입니까? – dit

+0

시도했지만 얻고 있어요 'java.lang.IllegalArgumentException : 자리 표시자를 해결할 수 없습니다 '# {systemProperties ['DATABASE ']} .jdbc.password'in string value "$ {# {systemProperties [ 'DATABASE'] } .jdbc.password} "' –

답변

0

당신은 관련된 질문에서 자세한 내용을 얻을 수있는 응용 프로그램 컨텍스트 XML

<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>##YOUR PROPERTIES FILE NAME###</value> 
    </property> 
</bean> 

을에 다음과 같은 구성을 사용 (How do you configure a Spring bean container to load a Java property file?)

은 PropertyPlaceholderConfigurer와의 설명은 (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html)

여기 주어진다

<value> 태그에있는 등록 정보 파일의 이름을 사용하십시오.

다음은 샘플 프로젝트에서 속성을 사용하는 방법의 예입니다. 프로퍼티 파일과 함께 processRetryPolicy라는 프로퍼티를 가진 bean이 있습니다.

process.executor.conn.retry.policy.isActive = true 
process.executor.conn.retry.interval.type = HOUR 
process.executor.conn.retry.interval.value = 1 
process.executor.conn.retry.default.policy = Retry 

환경 속성을 추가하기로

<bean id='processRetryPolicy' class='com.poc.process.model.ProcessRetryPolicy' > 
    <property name="isActive" value="${process.executor.conn.retry.policy.isActive}"/> 
    <property name="intervalType" value="${process.executor.conn.retry.interval.type}"/> 
    <property name="intervalvalue" value="${process.executor.conn.retry.interval.value}"/> 
    <property name="retryPolicy" value="${process.executor.conn.retry.default.policy}"/> 
</bean> 

속성이 속성에 정의되어 내가 스프링 배치 응용 프로그램 중 하나에서 다음을 사용했다 파일 : -

<property name="environment" value="#{jobParameters['env.type']}"/> 

환경 유형이 다음과 같이 런타임 매개 변수로 전달되었습니다.

java -Xmx12288m -D<<List of Params and Values>> env.type=$env 
,

스프링 표현 언어를 사용하는 스프링 코어에서 그 일을하는 또 다른 방법은 (http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/expressions.html)

귀하의 표현이 정확 보인다.

+0

안녕하세요, Amal, 답장을 보내 주셔서 감사합니다. 제 질문을 신중하게 읽어주세요. –

+0

@oualidqannouf 나쁘다! 나는 당신의 질문을 오해했습니다.어쨌든 표현 언어의 세부 사항을 추가 했으므로 문제의 표현이 정확 해 보입니다. 이 정보는 질문과 완전히 관련이 없을 수도 있지만 다른 사람들에게 도움이 될 수 있으므로 답변을 삭제하지 않을 것입니다. – Amal

0

추가 속성 장소 홀더

<bean id="propertyPlaceholderConfigurer" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations"> 
<list> 
<value>classpath:xxxxx.properties</value> 
</list> 
</property> 
</bean> 

그런 다음

<bean id="bean" class="xxx.class"> 
<property name="password" value="#{systemProperties['DATABASE']}.jdbc.password"/>  
</bean> 
관련 문제