百度理解:

1、DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

2、Service层:Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。

3、Controller层:Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量

4、DAO层,Service层这两个层次都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势,Controller,View层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。这样,在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。

5、DAO设计的总体规划需要和设计的表,和实现类之间一一对应。

6、DAO层所定义的接口里的方法都大同小异,这是由我们在DAO层对数据库访问的操作来决定的,对数据库的操作,我们基本要用到的就是新增,更新,删除,查询等方法。因而DAO层里面基本上都应该要涵盖这些方法对应的操作。除此之外,可以定义一些自定义的特殊的对数据库访问的方法。

7、Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。

8、在DAO层定义的一些方法,在Service层并没有使用,那为什么还要在DAO层进行定义呢?这是由我们定义的需求逻辑所决定的。DAO层的操作 经过抽象后基本上都是通用的,因而我们在定义DAO层的时候可以将相关的方法定义完毕,这样的好处是在对Service进行扩展的时候不需要再对DAO层进行修改,提高了程序的可扩展性。

————

.Dao层:全称Data Access Object。Dao层比较底层,负责与数据库打交道具体到对某个表、某个实体的增删改查

2.Service层:又叫服务层或业务层,封装Dao层的操作,使一个方法对外表现为实现一种功能,例如:网购生成订单时,不仅要插入订单信息记录,还要查询商品库存是否充足,购买是否超过限制等等。

3.Controller层:业务控制层,负责接收数据和请求,并且调用Service层实现这个业务逻辑。

Controller层像是一个服务员,他把客人(前端)点的菜(数据、请求的类型等)进行汇总什么口味、咸淡、量的多少,交给厨师长(Service层),厨师长则告诉沾板厨师(Dao 1)、汤料房(Dao 2)、配菜厨师(Dao 3)等(统称Dao层)我需要什么样的半成品,副厨们(Dao层)就负责完成厨师长(Service)交代的任务。不知道这个比喻是否合适。

————————————————

个人理解:DAO层主要是数据层,service层负责接口和接口的实现, 实现之后那么要对数据进行持久化,就要调用DAO层,controller层主要负责页面跳转。负责在页面和程序之间传输数据的,做页面的跳转。用户在页面中填写完表单数据,点击提交按钮,页面的表单数据由Controller传入Service层。

例如实现登录和注册

在service层有注册和登录俩个接口,并对其进行了实现,将注册的数据要持久化保存在数据库就调用DAO层。

登录时要和数据库中之前注册的进行验证,其也要调用dao层。

Springboot设计思路相关推荐

  1. 【项目实战】个人博客(SpringBoot,SSM,thymeleaf,Semantic UI)——从设计思路到部署一站式教学

    一.前言 1.项目背景 此项目并非原创,项目原型是李仁密老师的作品,具体的教学视频来自b站https://www.bilibili.com/video/BV1nE411r7TF,不过up主貌似也是搬运 ...

  2. 我的微信'智障聊天助手'的设计思路

    2019独角兽企业重金招聘Python工程师标准>>> 前言 每次写前言最费神,就是感兴趣想研究研究,有了一点点成果希望分享交流,如果能帮助别人就很好,如果有人指导一下就更好了.这次 ...

  3. 考试/答题系统的设计思路

    基于SpringBoot实现的考试/答题系统,由于这是从一个大项目中截取的部分功能,具体的业务代码非常复杂就不列出了,这里主要介绍系统的设计思路,可作为课设或毕设的参考 数据库设计 实体类设计 tes ...

  4. 第02篇:手写JavaRPC框架之设计思路

    作者: 西魏陶渊明 博客: https://blog.springlearn.cn/ 天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一.前言 隔壁老李又在喷我了: "完犊子了,小编这 ...

  5. 自己做一个短链服务,设计思路分享!

    其实实现短链服务并不是很难,最主要还是需要知道一些设计思路,还需要有一些基础技术知识,例如:哈希算法.全局发号器等. 下面一起来学习如何设计一个短链服务吧! 短链的价值 网址大家都知道,很长的一串字符 ...

  6. 微信小程序的商城类系统的完整设计思路

    主要实现技术:微信小程序+WXML+后端java+SpringBoot+Mysql 设计过程呕心沥血,大家如果需要源码等可以私信我,还包括系统的文档设计,完全可以做学生的毕业设计等. 后台精华代码: ...

  7. 工作流引擎核心设计思路!

    作者:vivo 互联网服务器团队- Cheng Wangrong 一.业务背景 营销自动化平台可以支持不同用户生命周期的活动旅程策略配置 ,根据用户触发的不同活动行为,进行差异化的营销触达方案.同时各 ...

  8. 第 5 章 Nova - 025 - OpenStack 通用设计思路

    API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例 nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 ...

  9. 亿级流量网关设计思路

    本文准备围绕七个点来讲网关,分别是网关的基本概念.网关设计思路.网关设计重点.流量网关.业务网关.常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分. 什么是网关 网关,很多地方将网关 ...

最新文章

  1. 了解下WSDL 端口
  2. 消息队列面试经典十连问
  3. 【机器学习】机器学习视角下的因果推断
  4. java二维码生成并可以转换
  5. 跟周报焦虑说拜拜!Excel打通FineBI,到底有多香
  6. ajax分批mysql_使用select2分批异步加载大量数据
  7. .Net中的并行编程-6.常用优化策略
  8. Java开源大全 网站
  9. 魔兽争霸III冰封王座宽屏分辨率的修改方法
  10. [观点]国难当头,为什么赵王还要杀掉李牧?因为人性最爱反噬没格局的人
  11. java tibco client,TIBCO EMS 8.5.1 安裝 (Linux)
  12. 使用商业智能BI工具有哪些好处?
  13. 如何从“固定型”思维模式转化为“成长型”思维模式
  14. niit考试题库计算机英语翻译,NIIT SM2-MT1模拟试题 HELP KEY
  15. superset 1.3 地图 汉字 展示,省市编码 ISO3166
  16. 一张收款码,同时支持微信、云闪付、支付宝、信用卡支付
  17. Linux 基础上篇
  18. 14、ICMP协议的主要功能
  19. SkyWalking简介和安装
  20. 计算机组装方案i5,极简逼格DIY装机 i5-6500/GTX1070组装电脑配置单 (全文)

热门文章

  1. 半年巨亏50亿!上海电气又又又爆雷!30万股东欲哭无泪!
  2. 亚马逊无货源跨境电商,小白运营需要注意哪些?店铺如何稳定?
  3. 第一届机电汇产业联盟供需对接会成功举办
  4. 计算机技术发展带来的改变,科技发展带来的变化作文
  5. SAP 前台和接口都报“没有科目变式分配到FB01//K5”
  6. teams 无法登录 错误代码 - caa70004
  7. PbootCMS城市分站插件 生成任意城市的分站链接地址 支持分站同页跳转 实现dedecms织梦城市分站插件效果
  8. 21款迈巴赫S480的高光时刻,奢华又不张扬
  9. 吐血整理 | 快速学习大厂们的软件案例经验
  10. 6. 用*输出字母C的图案