Spring属性初始化

时间:2017-01-27 18:00:19

标签: java xml spring spring-ioc

我有一个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文件,而不是它的内容。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:-1)

需要告诉 spring使用以下属性。

@Value("${db.path}")
private String path;