2014-05-22 2 views
0

저는 Spring을 처음 사용합니다.스프링은 동적으로 생성 된 값을 자리 표시 자에 넣습니다.

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="location" value="classpath:properties.txt"/> 
</bean> 

<int-mqtt:outbound-channel-adapter id="mqtt-publish" 
     client-id="${clientID}" 
     client-factory="clientFactory" 
     auto-startup="true" 
     url="${url}" 
     default-qos="${qos}" 
     default-retained="${retain}" 
     default-topic="${topic}" /> 

모두가 위의 코드와 잘 작동 ...하지만 인스턴스가 실행시에 생성 무언가에 의해 클라이언트 ID를 대체하기 위해 ... 그것을 가능 : 지금 등록 정보의 값을 읽어 자리 표시자를 사용하는 방법을 이해는 파일 (또는 사용자 입력에서) 정적으로 속성 파일에서 읽는 대신?

답변

1

런타임에 각 메시지마다 동적으로 의미합니까?

연결을 설정하는 동안 clientId가 사용 되었기 때문에 (서버 연결이 끊어 지거나) 한 번 수행됩니다.

응용 프로그램 컨텍스트가 초기화 될 때 동적으로 값을 프로그래밍 방식으로 제공하려면 예, Spring Expression Language이 솔루션입니다.

예를 들어, #{myBean.myProperty}는 빈 myBeangetMyProperty() 메소드를 호출하고 #{myBean.someMethod()}someMethod()를 호출합니다.

dynamic-ftp 샘플은 하위 응용 프로그램 컨텍스트에서 속성 자리 표시자를 사용하여 필요할 때마다 새 아웃 바운드 어댑터를 만들어 런타임에 자리 표시자를 사용합니다.

+0

Garry Russell 자신! 나는 코드에서 당신의 이름을 읽을 수 있다는 것을 알았습니다. 결국 # {myBean.myProperty}였습니다. 나는 봄에 정말로 새로운 사람이다. 도움을 많이 Thx! –

관련 문제