假如项目中有两个模块,A依赖B,则我们说A是高模块,B是低模块,同时A中有个类叫做Caculate,方法叫getTotal()
问题:
B模块怎么用到A中的这个方法呢?
方案1:在B模块添加对A的依赖是否可行呢?
分析:不可行的,因为A依赖了B,B依赖了A
在加载A时需要先加载B,而加载B的前提又是加载A,这样启动时就会出错了!
方案2:把A的代码拷贝到B中?
分析:假如把方法拷贝过去,一般也要牵涉到其他的一些类什么的都要拷贝过去,这样做不仅
繁琐,更是给后期维护带了了很大的麻烦,所以并不合适!
方案3:接口
在B中添加个接口,不妨命名为CaculateInterface
此时B中的某个类如何要引用的话,就可以这么写
CaculateInterface caculate来引用,注意后面的是cac ulate,因为这个要和实现类名称保证一样,才能对应到实现,其实实质是要
set方法对应上,才能保证注入相应的实现
这里还要说明,在spring的大容器中注入的实例没有高低之分
本文探讨了两个模块间的依赖问题,并提出了通过接口的方式解决高模块依赖低模块时出现的循环依赖难题。
1389

被折叠的 条评论
为什么被折叠?



