【发布时间】:2017-01-27 18:00:19
【问题描述】:
我有一个带有以下属性占位符的 xml 可配置 Spring 上下文:
<context:property-placeholder
properties-ref="dbProperties" location="classpath:logmessages.properties" order="2"/>
<context:property-placeholder location="classpath:application.properties" order="1"/>
DB属性配置bean如下:
<bean id="dbProperties"
class="com.example.DatabasePropertiesLoader">
<property name="path" value="${db.path}"/>
</bean>
因为它来自名称,所以这个 bean 从数据库加载一些属性,例如端点和其他服务的凭据。但是,要访问保存此属性的数据库,它还需要保存在 application.properties 中的凭据:
public class DatabasePropertiesLoader extends AbstractFactoryBean<Properties> {
private String path;
@Override
protected Properties createInstance() throws Exception {
// logic loading properties
}
@Override
public Class<Properties> getObjectType() {
return Properties.class;
}
}
路径属性保存在 application.properties 文件中:
db.path=localhost:7777
如您所见,此 bean 需要注入“路径”属性才能创建。
但是无法做到,因为注入的值为空。我猜 Spring 只知道 application.properties 文件,而不知道它的内容。有没有办法解决这个问题?
【问题讨论】:
标签: java xml spring spring-ioc