我有一个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需要&#34;路径&#34;要注入的属性。
然而,它无法完成,因为注入的值为空。我猜Spring只知道application.properties文件,而不是它的内容。有什么方法可以解决这个问题吗?
答案 0 :(得分:-1)
您需要告诉 spring使用以下属性。
@Value("${db.path}")
private String path;