一直不太明白service层的作用,有时候甚至感觉service层可有可无。

dao层中已经有操作数据库的方法了,为什么还要service层去封装?有什么好处?

首先是mvc三层架构

mvc三层架构

三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。

三层架构区分层次的目的是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。

mvc的主要作用是什么---------->分层、解耦

如何分层?

1、数据层不包含任何代码,只有数据库,还有相关的存储过程。

2、数据访问的逻辑就都放在业务层

3、页面的展示在视图层

这种分层体系结构具有以下四个优点:

(1)避免了表示层直接访问数据访问层,表示层只和业务逻辑层有联系,提高了数据安全性。

(2)有利于系统的分散开发,每一个层可以由不同的人员来开发,只要遵循接口标准,利用相同的对象模型实体类就可以了,这样就可以大大提高系统的开发速度。

(3)方便系统的移植,如果要把一个 C/S 的系统变成 B/S 系统,只要修改三层架构的表示层就可以了,业务逻辑层和数据访问层几乎不用修改就可以轻松的把系统移植到网络上。

(4)项目结构更清楚,分工更明确,有利于后期的维护和升级。

Service层的作用

service层属于三层架构中的业务层,业务逻辑是放在Service中的,  之前单调的认为service层就是生成一个dao层的对象,然后调用dao层的方法就好了,造成这种感觉只要是由于以下原因。

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

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

主要表现在这几个方面:

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

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

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

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

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

service层存在的意义,就是为了方便扩展和维护。

service层的作用相关推荐

  1. 3、JavaWeb中Service层的作用、MyBatis的重要组件、mybatis-config.xml中的别名映射、properties配置、#{}和${}的区别、获取插入数据的主键值

    文章目录 1.Service层的作用 2.MyBatis重要组件 Resources SqlSessionFactoryBuilder SqlSessionFactory SqlSession 针对上 ...

  2. service层的作用是什么?是否可以省略

    一个基本的java项目分成Controller层,service层,mapper层等,controller是控制器层,mapper是数据访问层,与数据库相关,进行对数据库的增删改查等操作,servic ...

  3. 中service层的作用_浅析Java中dto、dao、service、controller的四层结构

    目前我所在的项目组采用的是SpringBoot框架,前端使用BootStrap+jQuery. SpringBoot是BS开发框架之一,不用单独开启tomcat服务器,目前比较流行,一般开发大型项目时 ...

  4. controller层和service层的作用

    1.在controller和service里都写那些代码? Controller,从字面上理解是控制器,所以它是负责业务调度的,所以在这一层应写一些业务的调度代码,而具体的业务处理应放在service ...

  5. service层的作业+mybatis中的重要组件

    一.JavaWeb中service层的作用 MVC = Jsp + Servlet + JavaBean 其中jsp View,servlet Controller,javaBean 是一个可复用的j ...

  6. php yii2 service层,卩大王叫我来巡山

    # 序言 #### service是什么? 在面向OO的系统里,service就是biz manager,在面向过程的系统里service就是TS脚本. ### service有什么作用? servi ...

  7. Spring开发Service层

    Spring开发Service层 service层的作用: 业务逻辑操作(某些操作依赖于Dao层),将操作后的结果在返回出去给View层根据结果展现视图效果. 在开发完dao层(Spring+MyBa ...

  8. pojo层、dao层、service层、controller层的作用

    pojo层(model) 实体层 数据库在项目中的类 model是模型的意思,与entity.domain.pojo类似,是存放实体的类. 类中定义了多个类属性,并与数据库表的字段保持一致,一张表对应 ...

  9. Service层在分层中的作用

    在通用的J2EE应用分层结构中,经常发现有一个叫Service的分层,那么这个Service层到底是用来做什么的呢 ?简单地就字面理解来说, Service,即服务,那我们可以叫它为服务层.既然作为服 ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task03. 移除元素
  2. 隐藏在程序旮旯中的“安全问题”
  3. 汇编语言--mul 指令
  4. AI:周志华老师文章《关于强人工智能》的阅读笔记以及感悟
  5. 单片机发送数据到mysql_单片机的数据怎样进入到sql server的数据库中
  6. flex image 控件显示bmp 格式图片
  7. 金额转换java_java金额转换
  8. 再谈js对象数据结构底层实现原理-object array map set
  9. android之XmlSerializer序列化XML(写入) android之XmlSerializer序列化XML(写入)...
  10. Liunx 常用命令
  11. 苹果被拒:4.Guideline 2.3.3 - Performance - Accurate Metadata
  12. 穿越计算机的迷雾--读书笔记四
  13. android+模拟示波器,模拟示波器
  14. Linux—添加开机启动
  15. 五款支持Mac的设计软件
  16. win10关机后cpu风扇还在转_win10关机后风扇一直转,长按电源键才关闭怎么办
  17. Windows版GIT的用法
  18. 国外调查问卷可以赚钱吗?
  19. java中的artifact啥意思_maven中的groupId和artifactId到底指的是什么
  20. 13.Django shell与创建数据

热门文章

  1. python做平面设计有前途吗_月入 5K 和月入 2W 设计师的区别
  2. 数据治理审计范围与方法
  3. 进销存设计与分析_应收明细表(16)
  4. vue获取当前月最后一天_vue获取当前月最后一天_3月最后一天说说 4月第一天早安朋友圈心情说说文案...
  5. 笔记:时间序列相关问题
  6. 2017年天猫双11潮流盛典揭幕 纽约时装周高调宣布加入
  7. [集合]解决system权限3389无法添加的用户情况
  8. 中国帐篷和庇护所行业市场供需与战略研究报告
  9. 解决input在ios存在重影边框问题
  10. 强烈推荐两个用于广告屏蔽的 ABP和AB