Spring - 如何避免协作服务之间的实现锁定

时间:2011-02-10 11:26:42

标签: java spring dependency-injection

我正在编写一个使用spring for DI的小框架。我有许多服务,彼此合作。

ServiceA引用了ServiceB - 引用了ServiceC等。所有这些都是在spring配置xml中预先连接的。

当用户试图覆盖其中一个实现时,问题就出现了,比如ServiceB和他自己的实现,比如说ChildServiceB。现在,我真正想要的是用户ChildSerivceB应该连接到ServiceA。可以在春天完成吗?如果没有,这种情况的最佳设计模式是什么?

像春天的后期绑定之类的东西就是我正在寻找的东西。

我希望用户的弹簧配置在这种情况下尽可能小。

其他说明:

我为所有服务使用接口

为了方便那些使用默认服务的人,jar中提供了spring congiuration framework-beans.xml,他们只需要实例化它。

想要覆盖实现的用户可以创建自己的beans.xml,但这就是我难倒的地方,他们如何覆盖framework-beans.xml的“连线”?

1 个答案:

答案 0 :(得分:1)

  

当用户试图覆盖其中一个实现时,问题就出现了,比如ServiceB和他自己的实现,比如说ChildServiceB。现在,我真正想要的是用户ChildSerivceB应该连接到ServiceA。可以在春天完成吗?如果没有,这种情况的最佳设计模式是什么?

1 使用界面编程
2 让用户为ServiceB实施自己的服务 3 在Spring xml中配置Bean

<bean name="serviceB" class="com.something.DefaultServiceBImpl"/>

现在,如果您希望用户拥有自己的实现,只需将其更改为

即可
<bean name="serviceB" class="com.something.CustomServiceBImpl"/>

并在类使用界面