Maven模块依赖于IoC问题

时间:2012-11-16 16:46:36

标签: spring maven inversion-of-control

我有三个Maven模块:

  • Dao(包含DAO接口),
  • DaoImpl(包含实现Dao的DAO类),
  • 服务(包含使用DaoImpl对象的服务)。

三个模块之间的依赖关系如下:

DaoImpl - >道&lt ;-服务

' - >'意思是“取决于”

我想将DaoImpl bean注入Service bean。问题是,由于Service不依赖于DaoImpl,因此无法访问其类路径。因此,在Service中声明的DaoImpl bean无法自动连接到DaoImpl的应用程序上下文中声明的bean。

一种解决方案是使服务依赖于DaoImpl。

Dao< - DaoImpl< - Service

但是在这个cas中,没有为DAO提供接口的意义。将不再需要Dao模块,DaoImpl将被曝光。

你对这个问题有什么争论吗?

最好的问候。

2 个答案:

答案 0 :(得分:1)

恕我直言,你应该介绍第四个模块,它取决于dao,(其中一个)daoimpl和服务。

它的应用程序部署'模块 - 通常是WAR或类似的东西。

  • 申请 - >服务 - >道
  • 申请 - > DaoImpl - >道

Application模块的作用主要是准备完整的类路径。

答案 1 :(得分:0)

也可以通过

解决
Service
  |_DaoIface
  |_DaoImpl

这里可以从服务加载spring,因此可以看到IFace和Impl。

由于Impl对服务是直接可见的,因此并不意味着DaoIface不是必需的。这是你的设计决定。如果DAOImpls实现将在运行时更改,或者如果有任何其他组件要向其公开DAO层,那么iface将非常方便。