복붙노트

[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. ==============================

    1.@Value를 사용할 수 있습니다 :

    @Value를 사용할 수 있습니다 :

    @Value("${clientapi.url}") 
    public void setClientApiUrl(String clientApiUrl) { 
        this.clientApiUrl = clientApiUrl; 
    }
    
  2. ==============================

    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. ==============================

    3.승인. 방금 가져 왔어. @Autowired를 추가해야합니다. 같은 것 :

    승인. 방금 가져 왔어. @Autowired를 추가해야합니다. 같은 것 :

    @Autowired
    @Value("${clientapi.url}") 
    private StringValueResolver resolver;
    

    스프링 3.0.0을 사용하고 있습니다.

    건배

  4. ==============================

    4.스프링 3.0의 경우 @Value ( "$ {expression}")를 사용하여 올바른 방법이 표시됩니다.

    스프링 3.0의 경우 @Value ( "$ {expression}")를 사용하여 올바른 방법이 표시됩니다.

    3.0 이전의 스프링의 경우 다음을 시도 할 수 있습니다.

    @Autowired
    private StringValueResolver resolver;
    

    여기서 컨텍스트 초기화 문제는 없었지만 작동 여부를 확신 할 수 없습니다. 해결 프로그램을 사용하면 속성을 확인할 수 있습니다.

  5. ==============================

    5.내 솔루션은 사용하는 것입니다.

    내 솔루션은 사용하는 것입니다.

    <context:property-override location="classpath:clientapi.properties" />
    

    그런 다음 clientapi.properties 파일

    clientPreferencesManager.clientApiUrl=http://localhost:8084/ClientAPI/resources/
    

    이건 너무 좋다.

  6. from https://stackoverflow.com/questions/2882545/spring-properties-property-placeholder-autowiring by cc-by-sa and MIT license