[SPRING] 스프링 속성 (property-placeholder) autowiring
SPRING스프링 속성 (property-placeholder) autowiring
내 applicationContext.xml에 있습니다.
<context:property-placeholder location="classpath*:*.properties" />
<bean id="clientPreferencesManager" class="pl.bildpresse.bildchat2.business.ClientPreferencesManager" >
<property name="clientApiUrl" value="${clientapi.url}" />
</bean>
autowire로 동일한 작업을 수행 할 수 있습니까? 같은 것 :
@Autowired
@Qualifier("${clientapi.url}")
public void setClientApiUrl(String clientApiUrl) {
this.clientApiUrl = clientApiUrl;
}
해결법
-
==============================
1.@Value를 사용할 수 있습니다 :
@Value를 사용할 수 있습니다 :
@Value("${clientapi.url}") public void setClientApiUrl(String clientApiUrl) { this.clientApiUrl = clientApiUrl; }
-
==============================
2.왜 작동하지 않는지 이해하는 데는 시간이 걸렸습니다. 저는 항상 $ 대신 #을 사용했습니다. 나는 항상 메시지를 얻었다 :
왜 작동하지 않는지 이해하는 데는 시간이 걸렸습니다. 저는 항상 $ 대신 #을 사용했습니다. 나는 항상 메시지를 얻었다 :
EL1008E:(pos 0): Field or property 'secretkey' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'
그냥 그것을에서 변경했다 :
@Value("#{secretkey}')
에
@Value('${secretkey}')
나는 이것이 누군가의 시간을 절약하기를 바랍니다.
-
==============================
3.승인. 방금 가져 왔어. @Autowired를 추가해야합니다. 같은 것 :
승인. 방금 가져 왔어. @Autowired를 추가해야합니다. 같은 것 :
@Autowired @Value("${clientapi.url}") private StringValueResolver resolver;
스프링 3.0.0을 사용하고 있습니다.
건배
-
==============================
4.스프링 3.0의 경우 @Value ( "$ {expression}")를 사용하여 올바른 방법이 표시됩니다.
스프링 3.0의 경우 @Value ( "$ {expression}")를 사용하여 올바른 방법이 표시됩니다.
3.0 이전의 스프링의 경우 다음을 시도 할 수 있습니다.
@Autowired private StringValueResolver resolver;
여기서 컨텍스트 초기화 문제는 없었지만 작동 여부를 확신 할 수 없습니다. 해결 프로그램을 사용하면 속성을 확인할 수 있습니다.
-
==============================
5.내 솔루션은 사용하는 것입니다.
내 솔루션은 사용하는 것입니다.
<context:property-override location="classpath:clientapi.properties" />
그런 다음 clientapi.properties 파일
clientPreferencesManager.clientApiUrl=http://localhost:8084/ClientAPI/resources/
이건 너무 좋다.
from https://stackoverflow.com/questions/2882545/spring-properties-property-placeholder-autowiring by cc-by-sa and MIT license