假设我有两个模块。一个是核心,另一个是核心依赖实现模块。核心是该依赖实现模块战争的jar文件。春季覆盖bean配置
在核心我有豆状
<bean id="x" class="com.pokuri.X">
<property name="y" ref="y"/>
<property name="z" ref="z"/>
</bean>
定义这类有一个方法如下
public class X{
public void doSomeJob(){
.......
}
}
此方法正在从一些核心类调用。现在我需要根据我的核心相关实现更改X的doSomeJob()方法中的逻辑。所以,我创造这样
public class ExtX extends X{
@override
public void doSomeJob(){
// changed logic
}
}
一个类,并在这样的另一个应用程序上下文XML文件相同的ID来定义这个bean。
<bean id="x" class="com.pokuri.ExtX">
<property name="y" ref="y"/>
<property name="z" ref="z"/>
</bean>
和我们正在建设使用contextConfigLocation
上下文参数应用上下文中指定web.xml
值作为classpath:springfolder
。
但是在核心逻辑中,我只获得核心bean实例(即X
实例)而不是ExtX
。我们如何覆盖这个bean定义并让系统开始使用新的扩展bean定义?
而且我听说在不同的应用程序上下文中使用相同的ID会覆盖第一个加载的bean定义,并带有稍后加载的bean定义。在Bean定义上有任何priority
种类的属性让ApplicationContext在找到具有相同ID的Bean时使用最低优先级的一个优先级。重写bean定义的
会尽办法 – Pokuri 2012-08-07 03:18:03
当然它的作品。但是用另一个定义来定义一个定义是一个好习惯吗?我认为这是一种破解:/ – 2013-10-24 13:19:24