如何覆盖 spring 属性文件中的属性?

问题描述 投票:0回答:1

我有一个使用 Spring(不是 Spring boot)的常规 Java Web 应用程序,它使用名为 contextConfigLocation 的上下文参数来配置 spring bean:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      classpath:dao-common.xml
      classpath:dao.xml
    </param-value>
</context-param>

dao-common.xml
打包在 Web 应用程序使用的第三方 jar 中,而
dao.xml
打包在 Web 应用程序本身中。我可以编辑 dao.xml,但不能编辑 dao-common.xml

我试图用

dao-common.xml
中定义的bean定义来“覆盖”
dao.xml
中提供的bean定义,如下所示:

dao-common.properties
中的Bean定义:

<bean id="dbprops"
        class="DBProps">
        <constructor-arg value="" />
</bean>

dao.properties
:

中覆盖此定义
<bean id="dbprops"
        class="DBProps">
        <constructor-arg value="something else" />
</bean>

但是 Spring 使用构造函数 arg

dbprops
而不是
""
创建
"something else"
bean。有没有办法让 spring 在实例化
dao.xml
bean 时使用
dbprops
中的定义?

java spring
1个回答
0
投票

contextConfigLocation
中设置加载顺序:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:dao-common.xml
        classpath:dao.xml
    </param-value>
</context-param>

这将确保

dao.xml
最后加载并覆盖
dao-common

中的任何 bean 定义
© www.soinside.com 2019 - 2024. All rights reserved.