在之前我们开发的代码中,关于在Service中是调是用Dao还是其它Service的问题,都显得比较随意(我自己也是这样),其实在这样是不对的。
讲道理的话,Service A不应直接调用B的Dao层,而是应该调用B的Service层业务实现,因为B的Service是对其Dao的CRUD封装,在多库且有缓存的情况下,可能存在跨库操作,直接调用B的Dao显然是不合理的。
至于业务上的依赖问题,事实上本身Java类之间的通讯就是有依赖关系的。如果Service A业务依赖的Service B业务过于复杂,那就再抽象出Service B的另外一个Service C即可。所以不同的模块之间就只需要Service调用其它Service就好了,不需要在模块A的Service中调用模块B的Dao。这样做,简单的说就是为了代码结构更清晰,长远点说就是方便以后不同模块之间进行项目拆分。