春季:在创建任何bean之前初始化属性

时间:2018-11-04 00:21:06

标签: java spring spring-mvc web.xml applicationcontext

我的项目结构如下-

外观->服务-> DAO

在DAO层中,当初始化bean时,会从属性文件中注入许多依赖项。因此,必须先读取属性文件,然后再创建其余的dao bean。当应用程序启动时,它会提示Spring无法解析占位符。

DAO-application-context.xml就像-

<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="prop">
        <value>app.properties</value>
    </property>
</bean>

<import resource = "a-dao.xml" />
<import resource = "b-dao.xml" />
<import resource = "c-dao.xml" />

现在在所有子应用程序上下文中,即a-dao等,我们都有-

<bean ....>
  <property name = "xyz">
    <value>${appValue}<value/>
  </property>
<bean>

收到的错误是无法解析appValue。我认为这可能是由于bean创建顺序不正确造成的。但是,相同的配置正在另一个更大的项目中工作。

我已经检查过Order of Spring Bean Initialization,但实施该解决方案将不可行。还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

在此配置块中,属性 prop 似乎是错误的

<bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="prop">
    <value>app.properties</value>
</property>
</bean>

根据Spring documentation 您可以使用属性 location locations 设置属性文件的一个或多个值。

因此,代码应重构为

<bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
    <value>app.properties</value>
</property>
</bean>