gpt4 book ai didi

java - Spring : Initialization of properties before any bean creation

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:08 25 4
gpt4 key购买 nike

我的项目结构如下 -

外观->服务->DAO

在 DAO 层中,当初始化 Bean 时,会从属性文件注入(inject)许多依赖项。因此,必须首先读取属性文件,然后创建其余的 dao beans。当应用程序启动时,它会给出 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但实现该解决方案是不可行的。还有其他办法吗?

最佳答案

注册此配置 block ,属性prop似乎是错误的

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

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

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

所以代码应该重构为

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

关于java - Spring : Initialization of properties before any bean creation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53136701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com