Spring框架中Service和DAO接口的主要用途是什么?

2024-04-26

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

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

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


  1. 接口的目的是什么

简短回答:依赖注入

长答案:你看,我们不希望在我们的应用程序中具体实现和强耦合。无论有没有 Spring,接口都可以达到这个目的。 Spring 是一个充分利用了这一点的框架。使用接口,您可以通过定义描述参数和返回类型的契约(接口方法)来编写单个逻辑的多个实现,但您没有指定它是如何完成的。这为您在编写执行此操作的不同 Spring bean(Impl 类)时提供了很大的灵活性。List在Java中是一个接口,那么你就有像这样的实现LinkedList and ArrayList

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

简短回答:随便你

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring框架中Service和DAO接口的主要用途是什么? 的相关文章

  • LibGDX dispose() 方法应该如何使用?

    我很不清楚如何dispose LibGDX 框架中的方法有效并且应该使用 据我所知 当你不需要某种资源后 你必须进行处置以确保你的程序运行最佳 我正在开发一个移动应用程序 并且我有一个AssetManager在启动时在特殊指定的加载屏幕中加
  • Android 2.x 天城文 unicode 问题

    我正在尝试使用以下代码支持 android 2 x 的梵文字体 即使 android 2 x 无法渲染梵文字体 除了 raswa 和 dirga 存在一些问题之外 代码工作正常 是否有可能在 android 2 x 中获得正确的梵文表示形式
  • 访问注释中的属性值

    我想访问注释中的属性值 作为属性的值 对于前 在我的属性文件中 我有一个条目表达式 3 10 在我的 Scheduler 类中 我使用注释 Scheduled cron VALUE 我想从表达式键对应的属性文件中读取这个值 尝试这样做 Va
  • 错误:(52, 0) 未找到 Gradle DSL 方法:使用 Quickblox API 中的“сompile()”

    我尝试通过添加在线 Maven 依赖项在我的程序中使用 Quickblox API 我正在使用 Android Studio 当我尝试构建我的程序时 它显示以下错误 Error 52 0 Gradle DSL method not foun
  • 如何使用 Rally 的 JAVA API 将标签添加到 Rally 中的测试用例?

    我一直在努力向 Rally 中的测试用例添加标签 该标签已存在于 Tags 集合中 但我无法将其添加到测试用例中 有人可以提供一个关于如何执行此操作的示例吗 多谢 下面是如何执行此操作的示例 该示例显示了向现有测试用例添加标签 以及创建新测
  • 将依赖项添加到自定义 gradle 插件

    我正在创建一个使用 gson 的 gradle 插件 但是当我在客户端使用该插件时 它会抛出此错误java lang NoClassDefFoundError com google gson Gson我希望我以错误的方式链接插件中的依赖项
  • 如何保护 Hibernate QBE 查询的安全

    目前 我知道四种使用 hibernate 进行事务处理的方式 使用对象 使用HQL 使用特定于数据库的 SQL 使用标准 QBE 好吧 关于它们对注射的抵抗力有多强 我认为是这些 如果我错了 请纠正我 安全 因为内部 SQL 调用是参数化的
  • 查看两个对象是否具有相同的类型

    假设我有一个类 A 并且 B C D 都是从 A 派生的 如果我想知道引用的对象的类型是什么 我可以声明 pseudo code if obj instanceof B lt is B gt else if obj instanceof C
  • 当我计划高效缓存多个值时,应该如何实现 Guava 缓存?

    我有一个带有 Guava 的 Java 类LoadingCache
  • 对于值类型,asInstanceOf[X] 和 toX 之间有什么区别吗?

    我使用 IntelliJ 将 Java 代码转换为 Scala 代码的功能 通常效果很好 看来 IntelliJ 用调用替换了所有强制转换asInstanceOf 是否有任何有效的用法asInstanceOf Int asInstanceO
  • jsoup 的奇怪编码行为

    我用jsoup从不同页面的html源代码中提取一些信息 大多数都是UTF 8编码的 其中一个是用 ISO 8859 1 编码的 这会导致一个奇怪的错误 在我看来 包含错误的页面是 http www gudi ch armbanduhr me
  • 信任所有将文件发送到 https Web 服务的 java 类

    我需要编写自己的类来告诉 mule 与服务 wsdl 的 https 连接已验证 我的 mule 项目已经接近完成 但最后一块丢失了 在特定的 url 发送文件 我想要实现的目标 建立连接并将 xml 发送到目标 url 读取 xml 格式
  • Java 中的冒号是什么意思?

    Java 中的冒号是什么意思 我有这个 public static List
  • 将自定义文件与我的 Android 应用程序关联

    我想将特定扩展名的文件 例如任何扩展名为 xyz 的文件 与我的应用程序关联 这意味着 当用户在文件资源管理器 或其他地方 如 gmail 驱动器等 中点击 SaveFile1 xyz 时 我的应用程序应该启动 并且文件的 Uri 将在 I
  • 压缩 Log4j 文件

    是否可以压缩日志文件 我通过 RollingFileAppender 进行 log4j 附加功能 http logging apache org log4j extras 对此表示支持 只需将以下内容添加到您的RollingFileAppe
  • 在java中获取调用层次结构

    我在追踪错误时遇到了很大的困难 了解哪个方法调用了某个方法会很有帮助 有没有一种简单的方法可以从java获取调用层次结构 Java 是应用程序的一小部分 因此我无法在 eclipse net beans 中编译和运行整个应用程序 因此我无法
  • 如何在 JTextArea 中查找光标位置

    有人会帮我找到 JTextArea 中以像素为单位的光标位置吗 我用过txtArea getCaretPosition 但这不是我所期望的位置 实际上我想要光标位置在x y像素坐标 TextUI http download oracle c
  • -XX:MinHeapFreeRatio 和 -XX:MaxHeapFreeRatio 的目的是什么

    请告诉我这些选项的目的 谷歌搜索后我想 MinHeapFreeRatio 表示 GC 后将确保堆内存中指定的最小空间百分比是可用的 和 MaxHeapFreeRatio告诉 GC后堆内存中的空闲空间不会超过指定的百分比 如果空闲内存超过指定
  • 在 Transport.send(message) 上获取 ParseException

    由于某种原因 当我在 MimeMessage 上调用 Transport send 时 出现 javax mail internet ParseException 以前 当它只是一封纯文本电子邮件时 这是有效的 但是当我将其更改为同时包含文
  • IntelliJ IDEA 无法在 Ubuntu 上启动

    我用IDEA好几个月了 到现在还可以 现在从快捷方式启动IDEA没有效果 我想这是在一些更新之后发生的 我尝试重新安装IDEA 但问题仍然存在 从终端启动 idea sh 会产生类似的效果 chronoexp ChronoExp PC Pr

随机推荐

  • 如何在 FORMSOF Inflectional 全文搜索中获取匹配项的位置?

    我使用 CONTAINSTABLE 查询与 MS SQL Server 的全文索引引擎在文本列中进行搜索 例如 SELECT FROM MyTable INNER MERGE JOIN CONTAINSTABLE MyTable sDesc
  • 合并 ResourceDictionary 与 App.xaml

    我正在阅读有关 ResourceDictionary 的内容 并且遇到了一个令人困惑的问题 看来每个 XAML 只能有 1 个 ResourceDictionary 因此 如果我想使用多个资源字典 我可以合并资源字典 如果我可以合并字典 那
  • 从 JavaScript 中同步导入 JavaScript 文件?

    我不想弄乱我的 HTML 文件 而是想通过另一个 JavaScript 文件导入外部 JavaScript 文件 就像 import in css 在几个网站上 包括 StackOverflow 本身 我注意到向 DOM 附加脚本标签可以解
  • 缩放电缆表以适合页面宽度

    如何使用 kable 函数格式化 pdf 中的表格 因为我的输出表格宽度超过了pdf的宽度 这是一个例子 output pdf document r df lt cbind mtcars 1 5 mtcars 1 5 knitr kable
  • AJAX + SEO 快速问题

    当用户希望在页面加载之间发生效果 即旧内容淡出然后新内容返回 时 我通常按如下方式构建网站 index php about php 等
  • 如何从 kubernetes 集群内部访问主机的 localhost

    在此应用程序中 nodejs pod 在 kubernetes 内部运行 而 mongodb 本身作为 localhost 位于主机外部 这确实不是一个好的设计 但它只适用于开发环境 在生产中 将有一个单独的 mongodb 服务器 因为这
  • jQuery 中两个数组的合并、存储唯一元素和排序

    var Arr1 1 3 4 5 6 var Arr2 4 5 6 8 9 10 我正在尝试合并这两个数组 输出是 1 3 4 5 6 4 5 6 我用过 merge Arr1 Arr2 这一块将它们合并 使用警报我可以看到像上面这样的合并
  • 搜索拥有超过十亿条记录的数据库的最有效方法?

    我的客户有一个巨大的数据库 仅包含三个字段 主键 无符号数 姓名 多字文本 描述 最多 1000 个 varchar 该数据库拥有超过数十亿条条目 我以前没有处理如此大量数据的经验 他希望我设计一个使用 AJAX 如 Google 的界面来
  • 具有自托管代理的 Azure DevOps Pipeline for Java 项目

    我们有一组使用不同 JDK 版本开发的 Java 项目 项目中使用了不同版本的 Gradle 和 Maven 我们应该使用以下命令创建 Azure DevOps PipelineSelf Hosted Agent截至目前 构建代理服务器已随
  • Visual Studio 2015 - C# Windows 通用应用程序缺少程序集引用

    今天 我将我的 Windows 通用应用程序项目从 github 克隆到运行新安装的 Visual Studio 2015 的新计算机上 项目加载后 我注意到我的所有页面和属性都带有红色下划线 并且有许多错误 CS0246 C The ty
  • Microsoft 的 STL::list::sort() 使用哪种排序算法?

    注 我不小心发帖了这个问题 https stackoverflow com questions 1717773 which sorting algorithm is used by stls listsort没有指定我正在使用哪个STL实现
  • John Resig 的 Javascript 继承片段是否已弃用?

    我正在寻找一种简单的方法来创建两个类 一个类继承另一个类 子类重新定义父类的方法之一 并在新方法中调用父类的方法 例如 有一个班级Animal and Dog 其中 Animal 类定义了一个方法makeSound 它建立了如何输出声音 然
  • 如何处理Kafka流中的不同时区?

    因此 我正在评估 Kafka Streams 及其功能 看看它是否适合我的用例 因为我需要每 15 分钟 每小时 每天聚合传感器数据 并发现它由于其窗口功能而很有用 因为我可以通过应用创建窗口windowedBy on KGroupedSt
  • CSS 可调整大小的带标题的图像

    我正在尝试获取并排显示的两个图像的 HTML 布局 并填充页面 同时保持其纵横比并保持图像彼此相邻 即不在页面每一半的中心 我还想要顶部有一个标题 我几乎已经使用下面的 CSS hackery 实现了这一目标 目前它看起来像这样 如果我水平
  • 使用python远程执行shell脚本

    有没有一种方法可以让我在 Windows 上使用 Python 来执行位于远程 Unix 计算机上的 shell 脚本 P S 抱歉编辑晚了 我确实知道 Paramiko 但我想知道是否有办法在没有它的情况下做到这一点 对于初学者来说 可以
  • Roslyn 脚本:运行时异常的行号信息

    我正在摆弄 Roslyn 脚本的东西 使用Microsoft CodeAnalysis CSharp Scriptingnuget 包 我想知道是否有一种方法可以将行号信息添加到堆栈跟踪中 以了解脚本内发生的异常 当我运行以下 C 代码时
  • 如何执行更新UI视图Android的后台作业[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在我的 Android 应用程序中 我有一个带有视图的活动 例如 在活动开始或创建主布局时 我想启动一个后台作业 每 5 秒从主布局更
  • CLOB 与 VARCHAR2 以及还有其他替代方案吗?

    我正在为我的应用程序使用 DevArt 的 dotConnect 和 Entity Developer 我已经使用实体优先功能创建了表 我注意到许多列类型都设置为 CLOB 我只有 MySQL 和 Microsoft SQL Server
  • 如何在按下/单击 TextField 时使用 TextFieldValue (带 FocusRequester)将光标设置到文本的任何部分

    我试图环顾四周 但找不到办法 force a focus set the cursor到文本末尾 并且仍然能够设置cursor到文本的任何部分时 按下 点击 With FocusRequester光标设置在文本的开头 但是TextField
  • Spring框架中Service和DAO接口的主要用途是什么?

    我是 Spring 框架的新手 我在谷歌上搜索了很多关于 spring mvc 的网站 我注意到为每个服务和 dao 创建了接口 但我有一些疑问如下 1 为每个service和dao创建接口的主要目的是什么 2 spring mvc的项目结