gpt4 book ai didi

java - PropertyPlaceholderConfigurers 在参数化 DataSource bean 之后加载

转载 作者:行者123 更新时间:2023-12-01 11:24:42 25 4
gpt4 key购买 nike

在我的应用程序上下文的顶部,我声明了一个 PropertyPlaceholderConfigurer

...
<context:annotation-config/>

<context:property-placeholder location="classpath:foo.properties"/>
...

稍后我声明一个由该属性文件中的属性参数化的数据源 bean

<bean id="someDataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="connectionCachingEnabled" value="true"/>
<property name="URL" value="${database.url}"/>
<property name="user" value="${database.user}"/>
<property name="password" value="${database.password}"/>
</bean>

在部署期间,我注意到在初始化 PropertyPlaceholderConfigurer 之前创建了数据源 bean 并尝试建立连接。这导致我的数据源参数化无法填充。

知道为什么会发生这种情况吗?

bean 的创建有特定的顺序吗?某些 bean 是否总是先于其他 bean 初始化?有没有办法确保 PropertyPlaceholderConfigurer 在所有其他 bean 之前加载?

最佳答案

事实证明,我定义的 bean 之一是引用 sqlSessionFactory 的 mybatis 的 MapperScannerConfigurer。

如果 MapperScannerConfigurer 使用已弃用的 bean 属性进行初始化,则它可以在任何 PropertyPlaceholderConfigurer 之前进行初始化

要纠正该行为,必须使用不同的 bean 属性引用 sqlSessionFactory。

参见this related post了解更多详情

关于java - PropertyPlaceholderConfigurers 在参数化 DataSource bean 之后加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923979/

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