我有一个使用 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
中的定义?
在
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 定义