我有一个类已经在applicationContext.xml上注入了spring,我需要在不更改applicationContext.xml的情况下更改该实现。
我听说过AOP“IntroductionInterceptor”,但我没有找到很多有用的结果。
任何人都可以帮助我?
PS。对不起,我的英文不好,希望能给予理解。
答案 0 :(得分:2)
解决的一种方法是应用service locator pattern。 您可以注入一个可以返回不同实现的ServiceLocator,而不是直接注入bean。
//ServiceLocator bean
public Class ServiceLocator {
@Resource(name="service1")
private Service service1;
@Resource(name="service1")
private Service Service2;
public Service getService(String service) {
return ... //service
}
}
答案 1 :(得分:0)
你可以用几种方式做到这一点,这里有几个:
编写一个xml文件,通过添加相同的bean id和要使用的实现类来覆盖配置,将这个新的xml导入到现有的应用程序上下文中。
通过代码,根据您的需要,您可以在调用代码之前设置新的实现。
可能会有更多,但大多数情况下我们在项目数量上使用了'1'。
如果您有多个具有相同ID的bean,则spring将拾取最新的bean,例如
<beans>
<import resource="a.xml"/>
<import resource="b.xml"/>
</beans>
现在,如果a.xml
和b.xml
都定义了具有相同Id的bean,则spring将使用b.xml
中定义的bean。
干杯!!