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