2012-08-16 2 views
2

스프링을 <context:property-placeholder> 요소로 제공 할 수 있음을 알게되었습니다. PropertyPlaceholderConfigurer을 사용하여 변수를 보간 (예 : ${foo}과 같은 토큰 대체)하여 특성 파일과 비교합니다.스프링 용 자체 보간기를 제공 할 수 있습니까?

토큰을 해결하는 데 사용되는 클래스를 사용자 정의하는 방법이 있습니까? 특히 속성 파일을 사용하는 대신 Apache Commons ConfigConfiguration 개체를 사용하여 토큰 값을 제공하고 싶습니다.

+0

[org.springframework.core.env.PropertyResolver] (http://static.springsource.org/spring/docs/3.1.0.RELEASE/javadoc-api/org/springframework/core/env/PropertyResolver.html)) 유망 해 보이지만 javadoc은 실제로 그것을 사용하는 방법을 설명하지 않으며 [3.1 release reference documentation]에 언급되어 있지 않습니다. (http://static.springsource.org/spring/docs/3.1.0.RELEASE/reference/htmlsingle /). – bacar

답변

1

예, 서브 클래스 PropertyPlaceholderConfigurerloadProperties 메서드를 재정의하십시오. 이 메서드는 Properties 개체로 전달되며 원하는 값으로 채울 수 있습니다. 또는 PropertiesPersister의 대체 구현을 정의하고이를 보통의 PropertyPlaceholderConfigurer에 연결할 수 있습니다.

스프링 3.1에서는 사용자 자신의 PropertySource 구현을 생성하고 응용 프로그램 컨텍스트에 일반적으로 ApplicationContextInitializer을 사용하여 등록하여 커먼 구성 객체에서 직접 값을 가져올 수 있습니다. This blog post은 프로세스에 대한 개요를 제공합니다. Spring 3.1의 <context:property-placeholder>은 등록 된 PropertySources과 사용자가 지정한 속성 파일에서 값을 가져옵니다.

+0

그리고이 클래스에서 무엇을할까요? 아마 나는 스프링 구성에 대해 어떤 식 으로든 말해야 만합니다. – bacar

+0

'Properties' 객체가 아닌 구현이 있습니까? Commons'Configuration' 인터페이스는'Properties'의 서브 클래스가 아닙니다 - Configuration을 감쌀 수 있도록 Properties를 서브 클래스해야 할 수도 있습니다. – bacar

+0

봄 3.1 예, 유용한 블로그 게시물 링크를 사용하여 내 대답을 편집했습니다. –