gpt4 book ai didi

java - 为什么 Spring 会尝试使用属性变量引用字符串而不是值?

转载 作者:行者123 更新时间:2023-12-01 16:02:27 25 4
gpt4 key购买 nike

简而言之,这是问题:

<bean id="handlerFactory" class="com.westfieldgrp.audit.jdklogging.cpm.CPMHandlerFactory">
<property name="schemaName" value="${env.audit.databaseSchema}" />
<property name="bufferSize" value="${env.audit.bufferSize}" />
<property name="threaded" value="${env.audit.threadedAuditHandler}" />
<property name="dataSourceSelector" ref="dataSourceSelector" />
</bean>

CPMHandlerFactory 上的 bufferSize 是一个 int。 Spring 失败是因为它尝试将值设置为“${env.audit.bufferSize}”而不是属性文件中的实际值。

现在,当我更改属性文件的名称或文件中的 env.audit.bufferSize 时,Spring 提示它找不到属性“env.audit.bufferSize”。这对我来说,它可以找到该属性,但它没有将值设置为“20”,而是尝试将其设置为“${env.audit.bufferSize}”。谁能解释为什么 Spring 可能会这样做以及我能做些什么?

以下属性文件的内容:

env.audit.databaseSchema=TDB2DATA
env.audit.dataSourceName=java:comp/env/AuditDataSourceAlias
env.audit.bufferSize=20
env.audit.threadedAuditHandler=true

谢谢,彼得

编辑:

感谢下面的 Jamestastic 发现了这个问题。事情是这样的:我们有一个“主”上下文文件,如下所示:

<import resource="environmentBeans.xml" />
<import resource="serviceBeans.xml" />
<import resource="auditBeans.xml" />

“environmentBeans.xml”中包含 PropertyPlaceholderConfigurer。问题是,我添加了一些引用“auditBeans.xml”上下文的代码,当然它没有配置器。我将其切换为引用“主”上下文,效果很好。

关键是理解为什么这些值不会被替换:因为没有属性配置器。

所以,谢谢!

最佳答案

您是否记得添加 <context:property-placeholder />PropertyPlaceholderConfigurer您的 Spring 上下文的 bean 定义?

关于java - 为什么 Spring 会尝试使用属性变量引用字符串而不是值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3479156/

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