【问题标题】:What is main purpose of interface for Service and DAO in spring framework?Spring框架中Service和DAO接口的主要用途是什么?
【发布时间】:2018-10-06 21:23:14
【问题描述】:

我是 Spring 框架的新手。我已经在谷歌上搜索了很多关于 spring mvc 的网站,我注意到为每个服务和 dao 创建了接口,但我有一些查询如下:

1) 为每个服务和 dao 创建接口的主要目的是什么?

2) spring mvc的项目结构应该如何?

【问题讨论】:

标签: java spring oop interface


【解决方案1】:
  1. 接口的作用是什么

简答:依赖注入

长答案:你看,我们不希望在我们的应用程序中实现具体的实现和强耦合。接口服务于这个目的,不管有没有 Spring。 Spring 是一个大量利用它的框架。使用接口,您可以通过定义描述参数和返回类型的协定(接口方法)来编写单个逻辑的多个实现,但您没有指定它是如何完成的。这为您编写不同的 Spring bean(Impl 类)提供了很大的灵活性。 List 在 Java 中是一个接口,然后你有像 LinkedListArrayList 这样的实现

  1. Spring MVC 项目应该如何构建

简短回答:随便你喜欢

长答案:您是使用 Spring MVC 作为 API 服务器还是提供 JSP/Thymeleaf 等视图?如果我正在编写一个 API,我将拥有控制器(入口点和 Spring 特定功能)、外观(业务逻辑是纯 Java,没有框架类)和 DAO/服务(取决于数据来自数据库还是来自第 3 方 API,可能两者都有) 至少。对于 MVC,我将有几乎类似的设置,但根据您与 API 提供商的协议,我可能会放弃服务层并更多地关注 Javascript 方面。在这个时代,我建议不要使用 JSP/Freemarker。与使用任何语言的 React + API 服务器相比,它们的开发速度要慢得多。

【讨论】:

  • 谢谢陈金龙的回复。但是我仍然对某些方面感到困惑,例如我们也可以通过直接自动连接实现类来实现依赖注入,那么为什么我们需要依赖注入的接口呢?如果我们在多个服务之间有共同的方法,那么定义一个契约(接口方法)是一件好事,但是如果我在多个服务之间有不同的方法呢。
  • 使用接口通常被认为是好的做法。想象一下使用非 DI 框架。 Spring 通过让你注入你想要的任何 bean 来简化它,即使它是一个实现,但请记住,像你的 Facade(业务逻辑层)这样的层不应该被框架特定的注释绑定以实现可移植性。如果您使用@inject 而不是@autowired,那么您可以将您的业务逻辑从Spring 移植到其他框架,代码更改为0。方便 =]
  • 非常感谢陈金龙的回答。现在我很清楚了,你的回答很有用。
猜你喜欢
  • 2023-03-07
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
相关资源
最近更新 更多