2010-01-14 2 views
1

config.properties 파일에서 설정 한 속성을 필요로하는 Spring MVC Controller 클래스가 있습니다. 나는 이미이 설정 파일을 사용하여 일부 db 속성을 설정했기 때문에이 속성을 설정하는 비슷한 방식으로이 속성에 액세스 할 수 있다고 생각했습니다. 차이점은 내 컨트롤러 클래스는 XML 파일에 주석이 달려 있지 않고 선언되어 있지 않으므로 일반적인 방법으로 속성을 설정할 수 없다는 점입니다. 나는 준비가 내 config.properties 그래서 나의 XML 파일에서 사용할 수 있습니다Annotated File에서 속성을 설정하려면 Spring XML 엔티티를 사용 하시겠습니까?

<context:property-placeholder location="/WEB-INF/config.properties" /> 

내가이 속성의 항목에서 내 컨트롤러 클래스에서 다음 속성을 설정하고자하는 파일 :

@Controller 
public class SampleUploadController { 

    private String audioFilePath; 
    public String getAudioFilePath() { 
     return audioFilePath; 
    } 
    // I want this set from the properties file I've declared in my 
    // XML file: e.g. ${props.audioFilePath} 
    public void setAudioFilePath(String audioFilePath) { 
     this.audioFilePath = audioFilePath; 
    } 
} 

이것이 가능합니다. 그렇지 않다면 누군가가 설정 파일에서 필요한 속성을 얻는 방법을 제안 할 수 있습니까? 내 루트 WEB-INF에 있습니다. 문제는이 시점에서이 파일의 위치에 대한 참조를 얻기 위해 ServletContext에 액세스 할 수 없다는 것입니다.

답변

2

스프링 3에서 @Value 주석을 사용하면됩니다 (예 :

@Value("${props.audioFilePath}") 
public void setAudioFilePath(String audioFilePath) { 
    this.audioFilePath = audioFilePath; 
} 
+0

감사합니다. 질문 하나,이 값을 찾는 @Value 주석은 어디에 있습니까? Spring 컨테이너가 알고있는 모든 Property-placeholders를 살펴 보는 것 뿐인가? –

+0

나는 그렇다고 믿는다. 그것은 당신이'를 사용하여 지정한 것과 같은 메커니즘을 사용합니다. – skaffman

0

Skaffman은 정확하지만 자신의 컨텍스트에서만 작동하도록로드 된 속성은 알고 있어야합니다. 예를 들어 속성을로드하는 응용 프로그램 컨텍스트 부모 모듈이있는 경우 해당 속성이있는 서블릿 컨텍스트에 할당 된 Bean에서는 @Value를 사용할 수 없습니다. 단지 볼 수는 없습니다.

관련 문제