我正在编写一个使用spring for DI的小框架。我有许多服务,彼此合作。
ServiceA引用了ServiceB - 引用了ServiceC等。所有这些都是在spring配置xml中预先连接的。
当用户试图覆盖其中一个实现时,问题就出现了,比如ServiceB和他自己的实现,比如说ChildServiceB。现在,我真正想要的是用户ChildSerivceB应该连接到ServiceA。可以在春天完成吗?如果没有,这种情况的最佳设计模式是什么?
像春天的后期绑定之类的东西就是我正在寻找的东西。
我希望用户的弹簧配置在这种情况下尽可能小。
其他说明:
我为所有服务使用接口
为了方便那些使用默认服务的人,jar中提供了spring congiuration framework-beans.xml,他们只需要实例化它。
想要覆盖实现的用户可以创建自己的beans.xml,但这就是我难倒的地方,他们如何覆盖framework-beans.xml的“连线”?
答案 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"/>
并在类使用界面