我希望公开一个Properties
Spring bean,其值已通过典型的属性扩展机制进行扩展。我正在使用 Spring 3.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
fromserviceUrl
的值,则该值已扩展:http://myhost.com/some/endpoint
。
有谁知道将Properties
实例公开为值已扩展的 Spring bean 的好方法?
或者,如果有人可以将我指向一个将为我进行扩展的 Spring bean(必须是 Spring 3.1),我也会接受这个!Environment
(有趣的是,如果您手动从or中提取属性值,PropertySource
您会发现这些也未展开。)
谢谢,穆尔。