JEE架构问题:Service可以注入Service吗?或者 Service 只能注入 Dao?

JEE Architectural question: Service can inject Service? Or Service can inject only Dao?

这里是使用 Dao 和 Service 和 Controller 时的架构问题:

假设: 在DAO层,有DAO类叫:Dao1,Dao2,...

在服务层,有服务类叫:Service1,Service2,...

在Controller Layer中,有Controller类叫做:Controller1, Controller2, ...

Service1需要注入Dao1,而Service2

Controller1需要注入Dao2、Service1和Controller2

此架构是否遵循 JEE 原则?有什么问题吗?

最好tp说:Service只能注入Dao,Controlleur只能注入Service?

据我了解,JEE 没有 mention/recommend 设计模式。 JEE 定义了跨不同领域的 API 集,例如事务、jdbc、jax-rs 等,这些 API 的实现由不同的供应商提供。因此,JEE 标准有助于开发企业应用程序,但不规定任何设计原则。所以我想你的问题是这个架构是否遵循了良好的设计模式,是否有任何问题。

根据你的第二个问题,理想情况下,控制器不得注入 dao class。控制器必须只调用服务,服务应该注入 dao classes 并调用它们的方法。这种设计提供了控制器、服务和 Dao 层之间的松散耦合。这样,如果 dao class 方法的签名发生变化,控制器层不会受到影响,只有服务层需要改变。

一般来说,大部分的设计都是尽量做到松耦合高内聚。

希望对您有所帮助!