首页 > 解决方案 > 获取特定键的循环占位符引用错误

问题描述

如果我的占位符键以“数据库”开头,我会收到循环引用错误

此配置给出错误。

<bean id="paymentTransactionLogMessageDecoratorDao"
      class="com.gsicommerce.payment.dao.PaymentTransactionLogMessageDecoratorDao">
    <constructor-arg ref="paymentTransactionLogMessageDao"/>
    <constructor-arg value="${database.payments.logging.enabled}"/>
</bean>

错误:属性定义中的循环占位符引用“database.payments.logging.enabled”

当我们像这样更改键名时,

<bean id="paymentTransactionLogMessageDecoratorDao"
   class="com.gsicommerce.payment.dao.PaymentTransactionLogMessageDecoratorDao">
    <constructor-arg ref="paymentTransactionLogMessageDao"/>
    <constructor-arg value="${payments.database.logging.enabled}"/>
</bean>

这行得通。我们有任何保留关键字(“数据库”)吗?

如您所见,它是构造函数注入和属性名称完全不同。

public paymentTransactionLogMessageDecoratorDao(PaymentTransactionLogPersistenceServicetransactionLogMessageDao,
            boolean databaseLoggingEnabled) {
        this.transactionLogPersistenceService = transactionLogMessageDao;
        this.databaseLoggingEnabled = databaseLoggingEnabled;
    }

标签: javaspring

解决方案


可能您正在使用 maven 资源过滤:在这种情况下,如本文所述,要过滤的属性值的键与其各自的 Spring 属性占位符不能相同。


推荐阅读