前段日子在社群(点击加入)里看到有人讨论关于Service层接口的问题,DD也经常碰到周围的新人有问过一些类似的问题:一定要写个Service层的接口吗?Service层的接口到底用做什么用的呢?好像都没什么用啊?

DD的看法是:

Service层在业务逻辑不复杂的时候,似乎是没有什么用,但是随着应用迭代,业务逻辑变得复杂了之后,这一层是非常有用的。

主要表现在这几个方面:

1、更适合用来处理复杂的业务逻辑,可能会涉及多张表的操作,甚至还混杂着消息投递、接口调用等一系列的复杂综合性事务,这也是我们常说的事务管理所处的层次。

2、对表现层的复用支持,往往我们一个业务逻辑处理,不会单单只应用在一个API接口或页面上,如果直接把这部分内容写到Controller中,那当出现重复操作的时候就会产生复制黏贴,以后再要维护这段逻辑就麻烦了

3、对单元测试的支持,通过单独的一层service实现业务逻辑,那么对于业务逻辑的单元测试会更容易编写,只需要对service来编写就可以了;而web层的单元测试就不需要关注业务本身,只需要关注反馈格式就行了;不然web层就既要考虑业务逻辑的计算,还要考虑web反馈的格式验证,太过复杂。

4、业务逻辑的组装支持,因为Controller中依赖的是Service接口的定义,而具体实现可以有很多种,随着不同的需要可以注入不同的实现,可以比较好的实现多种业务逻辑版本共存。而如果直接把业务逻辑写了Controller,再要替换的时候,就比较麻烦了。

所以,Service层的设计是非常有必要的,这在单体应用的可维护性和可测试性上都占据了非常重要的地位。

那么,问题来了,你觉得Service层接口是否必要呢?

往期推荐

聊一聊:你平时写不写单元测试?

聊一聊:下班后的消息,要不要回?

聊一聊:你都用什么方式回忆青春呢?

聊一聊:MyBatis和Spring Data JPA的选择问题

聊一聊:Service层你觉得有用吗?相关推荐

  1. 实战SSM_O2O商铺_45【Redis缓存】配置Redis在Service层加入缓存

    文章目录 概述 Windows下安装Redis O2O-Service层加入缓存的配置步骤 1. pom.xml 添加jedis依赖包 2. redis配置文件 3.spring-dao.xml加载r ...

  2. service 层注入不同的数据源_.NET 理论基础+实战控制台程序实现AutoFac注入

    (给DotNet加星标,提升.Net技能) 转自:在7楼 cnblogs.com/RayWang/p/11128554.html 简介 该系列共5篇文章,旨在以实战模式,在.NET下的 控制台程序 F ...

  3. service层的作用

    一直不太明白service层的作用,有时候甚至感觉service层可有可无. dao层中已经有操作数据库的方法了,为什么还要service层去封装?有什么好处? 首先是mvc三层架构 mvc三层架构 ...

  4. java action dao_java中Action层、Service层和Dao层的功能区分

    一.Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DA ...

  5. [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  6. Service 层和 Dao 层有必要为每个类都加上接口吗?

    以下文章来源方志朋的博客,回复"666"获面试宝典  作者:架构思维 toutiao.com/i6882356844245975563 前几天刷头条又刷到了「Service层和Da ...

  7. CTO说:Service层的接口是不是多此一举

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:架构思维 来源:toutiao.com/i68823 ...

  8. 讨论:Service层需要接口吗?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 链接:toutiao.com/i6882356844245 ...

  9. Spring Boot神操作-多个数据源Service层封装

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:@pdai pdai.tech/md/spring/spri ...

最新文章

  1. win10安装JDK详细教程
  2. leetcode - 4Sum
  3. 各大视觉技术竞赛冠军及 TOP 方案集锦(持续更新)
  4. python列向输出字符串_Python读取字符串按列分配后按行输出
  5. Maven解决Failed to instantiate SLF4J LoggerFactory报错
  6. 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
  7. 【车辆计数】基于matlab形态学停车场车辆计数【含Matlab源码 628期】
  8. 【Python爬虫】新手入门案例教学(一):爬取豆瓣电影排行有关信息
  9. django 设置媒体url_django-文件上传Media url的配置
  10. 待办事项桌面插件,办公族的桌面帮手
  11. Java压缩背景透明图片后图片背景变成黑底
  12. 【HTML学习笔记】link标签中的href路径
  13. Scratch课程设计(三)
  14. 关于西门子软件SIMIT虚拟在环调试的一些问题解决
  15. 招聘 | 广州心理学公司招聘招商经理
  16. 苹果A15仿生芯片集成150亿个晶体管,较A14增加近30%
  17. 财报前瞻 | 互联网告别粗放经营,精耕行业价值成腾讯音乐年报看点
  18. git常用操作与在gitlab上进行MergeRequest(git rebase)
  19. 三极管 和 场效应管 的工作原理 简要概述
  20. 《鲁滨逊漂流记》的读后感作文札记2600字

热门文章

  1. KAIXIN000发狠 誓将匿名制进行到底!
  2. java CAS原语
  3. Firefox 的一个HTTP分析器扩展
  4. vector机器人 WHAT DO I USE THE VECTOR APP FOR? 我使用 VECTOR 应用程序做什么?
  5. linux selinux 安全上下文 修改
  6. linux centos yum错误 You could try using --skip-broken to work around the problem
  7. linux c 执行shell命令并获取返回结果
  8. salt盐度与用户密码加密机制
  9. Android之 AndroidManifest.xml 文件解析
  10. Android中实现双击屏幕跳转