java - 在 spring 应用程序中将 Controller 注入(inject)服务层是一种好习惯吗?

标签 java spring web-services architecture

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

最佳答案

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

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

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

关于java - 在 spring 应用程序中将 Controller 注入(inject)服务层是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192996/

相关文章:

java - 如何在 Spring TaskExecutor 中进行重试

web-services - 将敏感信息发送到 REST 服务

.net - ADO.Net 连接池已达到最大池大小

java - Android 通知 channel 设置 - 不列出应用程序提供的声音

java - 如何找到 JAR :/home/hadoop/contrib/streaming/hadoop-streaming. jar

java - 如何在 Eclipse 中正确设置由 appfuse 创建的多模块 SpringMVC 应用程序?

java - Jetty 字符集 utf-8 与 字符集 UTF-8

web-services - 如何从 Wildfly (Jboss) 访问 ws 端点的 CXF jar

java - 为什么我的变量没有在这些 for 语句中相加?

java - Struts2 提交按钮方法调用不会触发