gpt4 book ai didi

spring - Imports/Bean Refs 的属性占位符

转载 作者:IT老高 更新时间:2023-10-28 13:46:56 30 4
gpt4 key购买 nike

我可以使用从属性占位符加载的属性来动态导入上下文吗?

<context:property-placeholder location="classpath*:/enterprise.properties"/>
<import resource="classpath*:/Fsb${jdbc.ctxType?:Jdbc}-context.xml"/>

属性文件

jdbc.ctxType=JTA

这样我就可以改 rebase 于属性加载的上下文文件的类型。

另外,我可以做同样的事情来使 bean ref 名称动态化吗?

<bean id="personBusinessService" class="com.foo.PersonBusinessServiceImpl"
p:personUidDataService-ref="personUidDataService${personUidDataService.sib?:Api}"
p:identifierLookupSearchService-ref="identifierLookupSearchService${identifierLookupSearchService.sib?:Api}"
p:contactPointBusinessService-ref="contactPointBusinessService${contactPointBusinessService.sib?:Api}"
/>

属性文件

personUidDataService.sib=Stub

--------更新 ref 属性的示例--------- ----

我创建了一个包含以下条目的属性文件:

addressLookupSearchService.sib=DaoMock

然后我在 Spring 上下文文件中有以下配置:

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

<!-- EntityManager will be injected into DAO by JPA annotations -->
<bean id="addressSearchDao" class="com.foo.AddressSearchDaoImpl"/>

<bean id="addressSearchDaoMock" class="com.foo.MockAddressSearchDaoImpl"/>

<bean id="addressLookupSearchService" class="com.foo.AddressLookupSearchServiceImpl"
p:baseDao-ref="addressSearch${addressLookupSearchService.sib?:Dao}"/>

并且 addressSearch${addressLookupSearchService.sib?:Dao} 不起作用,它总是默认为addressSearchDao 的 bean id,即使我的属性说它应该设置为 addressSearchDaoMock。

关于我做错了什么有什么想法吗?

最佳答案

这是一个与 this 类似的问题。一个。

Imports bean(属性占位符)创建之前解决,因此您不能使用属性文件来定义要在导入语句中使用的属性。在这种情况下,您必须将属性设置为 system property (-Djdbc.ctxType=JTA)(查看链接 - 段落 Note)。

但是在 bean 定义中使用属性文件属性可以正常工作 - 这就是它们的用途 :-)

更新:自 Spring 3.1 起 Unified Property Management允许在导入中使用属性(感谢@Jay Blanton 在评论中提到这一点)。

关于spring - Imports/Bean Refs 的属性占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5410017/

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