Properties
典型的なプロパティ拡張メカニズムによって値が拡張されたSpringBeanを公開したいと思います。Spring3.1を使用しています。脱線させてください。
次のプロパティファイルがあるとします。
server.host=myhost.com
service.url=http://${server.host}/some/endpoint
そして、Spring XML構成ファイルのこの部分:
<bean id="appProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:default.properties</value>
</list>
</property>
</bean>
<context:property-placeholder properties-ref="appProperties" />
私は次の作業コードを書くことができます:
@Component
public class MyComponent {
@Autowired
@Qualifier("appProperties")
private Properties appProperties;
@Value("${service.url}")
private String serviceUrl;
// remainder omitted
}
唯一の問題は、取得したservice.url
値から値appProperties
を取得した場合、http://${server.host}/some/endpoint
つまり値が展開されていないことです。ただし、service.url
からの値を取得するserviceUrl
と、値は次のように展開されますhttp://myhost.com/some/endpoint
。
Properties
値が拡張されたSpringBeanとしてインスタンスを公開する良い方法を知っている人はいますか?
あるいは、誰かが私に拡張を行うSpring Bean(Spring 3.1である必要があります)を教えてくれるなら、私もこれを受け入れます!(興味深いことに、からプロパティ値を手動で取得するEnvironment
かPropertySource
、これらも展開されていないことがわかります。)
ありがとう、ムエル。