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

Java JEE架构问题:服务可以注入服务吗?或者服务只能注入Dao?,java,spring-boot,jakarta-ee,architecture,ejb,Java,Spring Boot,Jakarta Ee,Architecture,Ejb,使用Dao、服务和控制器时存在一个架构问题: 假设: 在DAO层中,有DAO类称为:Dao1、Dao2、 在服务层中,有一些服务类称为:Service1,Service2 在控制器层,有控制器类称为:Controller1、Controller2、 Service1需要注入Dao1和Service2 Controller1需要注入Dao2、Service1和Controller2 该架构是否遵循JEE原则?有什么问题吗 最好说:服务只能注入Dao,Controller只能注入服务?据我所知,JE

使用Dao、服务和控制器时存在一个架构问题:

假设: 在DAO层中,有DAO类称为:Dao1、Dao2、

在服务层中,有一些服务类称为:Service1,Service2

在控制器层,有控制器类称为:Controller1、Controller2、

Service1需要注入Dao1和Service2

Controller1需要注入Dao2、Service1和Controller2

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


最好说:服务只能注入Dao,Controller只能注入服务?

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

理想情况下,正如您的第二个问题所述,控制器不能注入dao类。控制器只能调用服务,服务应该注入dao类并调用它们的方法。这种设计提供了控制器、服务和dao层之间的松散耦合。这样,如果dao类方法的签名发生更改,控制器层将保持不变,只有服务层需要更改

一般来说,大多数设计都尽量实现松耦合和高内聚

希望这有帮助