在Spring应用程序中将Controller注入服务层是一个好习惯吗?

时间:2018-01-10 17:30:20

标签: java spring web-services architecture

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

您不应将Controller注入服务

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

答案 2 :(得分:2)

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