1

我有一个由spring在applicationContext.xml上注入的类,我需要更改该实现而不更改applicationContext.xml。

我听说过 AOP “IntroductionInterceptor”,但没有找到很多有用的结果。

任何人都可以帮助我吗?

PS。对不起我的英语不好,希望给予理解。

4

2 回答 2

2

一种解决方法是应用服务定位器模式。不是直接注入 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
    }
}
于 2013-08-19T19:41:39.360 回答
0

您可以通过多种方式做到这一点,这里有几个:

  1. 编写一个 xml 文件,通过添加相同的 bean id 和您要使用的实现类来覆盖配置,将这个新的 xml 导入到您现有的应用程序上下文中。

  2. 通过代码,您可以根据需要在调用代码之前设置新的实现。

可能会有更多,但大多数情况下我们在项目数量中使用了“1”。

如果您有多个具有相同 id 的 bean,spring 将获取最新的一个,例如

<beans>
   <import resource="a.xml"/>
   <import resource="b.xml"/>
</beans>

现在,如果两者a.xmlb.xml定义了相同 ID 的 bean,spring 将使用b.xml.

干杯!!

于 2013-08-19T20:03:13.657 回答