【问题标题】:is it a good practice to inject Controller into service layer in spring applicaiton?在spring应用程序中将Controller注入服务层是一种好习惯吗?
【发布时间】:2018-01-10 17:30:20
【问题描述】:

我看到一些代码将 Controller 作为依赖项注入到 Spring 应用程序的服务层中。我的第一反应是这似乎很错误,但我不知道如何向我的同事解释。有人可以告诉我为什么或为什么不是一个好主意吗?

【问题讨论】:

  • 是的,这是一种不好的做法。更简洁的做法是创建另一个包含依赖类所需的状态和行为的类,并在控制器中实例化该类并注入到依赖类中。
  • 你也可以看看这个answer。当然,这是不好的做法。

标签: java spring web-services architecture


【解决方案1】:

这不是一个好主意。控制器旨在处理新请求的接收。因此,控制器与它们操作的介质/技术紧密耦合。例如 HTTP 控制器,或通过消息队列获取其请求的控制器。

另一方面,服务类被设计成与请求到达应用程序的方式完全不耦合。这允许您跨各种控制器重用包含主要业务逻辑的服务类。假设明天您的老板不再想使用 HTTP,而是希望所有新请求都通过消息队列进入。因为您的服务类不依赖于任何控制器类,所以更改您的应用程序以使其能够正确处理来自消息队列的请求会容易得多。

因此,您的控制器将需要服务类,而不是相反。

【讨论】:

    【解决方案2】:

    你不应该将控制器注入到服务中

    “域”类(如 DAO)-->注入“服务”--> 然后将“服务”注入控制器。

    【讨论】:

      【解决方案3】:

      没有。一个好的做法是进行反向注入。我的意思是将服务注入控制器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-04
        • 2011-11-15
        • 2022-12-21
        • 2021-08-06
        • 2012-05-14
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        相关资源
        最近更新 更多