【问题标题】:JEE Architectural question: Service can inject Service? Or Service can inject only Dao?JEE架构问题:Service可以注入Service吗?还是Service只能注入Dao?
【发布时间】:2019-04-11 07:01:59
【问题描述】:

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

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

在服务层中,有服务类:Service1、Service2、...

在控制器层中,有控制器类:Controller1, Controller2, ...

Service1需要注入Dao1,而Service2

Controller1需要注入Dao2、Service1和Controller2

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

不如说一句:Service只能注入Dao,而Controlleur只能注入Service?

【问题讨论】:

    标签: java spring-boot jakarta-ee architecture ejb


    【解决方案1】:

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

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

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2017-04-07
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 2016-10-16
      • 2016-11-28
      • 2015-09-29
      相关资源
      最近更新 更多