3

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である必要があります)を教えてくれるなら、私もこれを受け入れます!(興味深いことに、からプロパティ値を手動で取得するEnvironmentPropertySource、これらも展開されていないことがわかります。)

ありがとう、ムエル。

4

1 に答える 1