现在Java项目一般都是用Spring全家桶开发,以web项目来讲结构主要分为Controller层、Service层和DAO层,细分的话有的项目可能还会有一个Manager层。

一个请求到达后端之后会根据请求的路径找到对应的Controller,Controller会调用相应的业务Service,Service会调用DAO,DAO去执行具体数据库查询操作。

同时DAO返回数据到Service,数据经过Service组装成合适的形式之后返回给Controller,最终Controller对外返回请求结果。

Controller层

首先,Controller主要负责处理对应的请求,在Controller层我们可以做一些基础的参数校验的工作,比如参数是否为空、格式是否正确等。

其次,Controller还有一个职责就是需要正确处理Service层抛出的异常。

最后,Controller负责将最终结果返回给调用方。

当然在Controller里也不是只能调用Service,就我自己平时写代码的习惯来讲,对于一些简单的查询操作,我会在在Controller里直接调用DAO,因为业务逻辑很简单没必要再用Service封装一层。

Service层

Service通常来讲就是业务层,主要用来处理复杂的业务逻辑,并对DAO返回的数据进行组装,使之符合接口定义的数据格式。

一些需要数据库事务支持的业务逻辑也会放在Service层处理,比如一个创建订单业务逻辑,我们需要保证创建订单和扣减库存两个操作要么都成功要么全失败,那么此时我们就可以这两个操作封装到一个Service方法里保证整体业务的事务性。

对于Service层出现的异常或是逻辑判断出错,我通常是直接抛出异常,因为如果在Service里catch了异常会导致数据库事务回滚出现问题。

DAO层

一般来讲DAO层主要负责与数据库交互,一个DAO类通常对应数据库中的一张表,DAO中是一些基础的增删改查方法。

我们在DAO层一般不会对数据进行额外处理,在开发实践中不同的Service可以根据自身的业务调用不同的DAO返回数据并进行组装。

总结

Java项目结构一般分为Controller层、Service层和DAO层;Controller层主要负责参数校验,处理Service抛出的异常以及返回最终数据;Service层主要负责处理一些复杂的业务逻辑或者是需要事务支持的业务,另外还负责对DAO数据进行封装;DAO层主要负责与数据库的交互操作。

java业务逻辑_java业务逻辑怎么写?相关推荐

  1. java如何优雅的写业务逻辑_java业务逻辑,写在哪里比较好?

    java业务逻辑,写在哪里比较好?对于这个问题,我想说的是:规范是死的,人是活的,一般情况下,我们可以根据不同的 java 框架规范的目录来写,特殊情况下也可以自定义. 问题分析 接触过 java 的 ...

  2. JAVA和遮掩_JAVA 你不知道的秘密 覆写,重载,隐藏,遮蔽,遮掩

    覆写(override) 一个实例方法可以覆写(override)在其超类中可访问到的具有相同签名的所有实例方法,从而使能了动态分派(dynamic dispatch):换句话说,VM 将基于实例的运 ...

  3. java没思路_Java编程没思路写不出代码怎么办

    成功不是你想要就能得到的,而是需要你不断努力争取的.时间飞逝转眼间已经学习java编程近一个月了.从零基础到现在能够自己独立完成一段完整的代码,成就感驱使着我学习更多的知识,做出更加优秀的作品. 1. ...

  4. java bufferedimage压缩_java – 如何将BufferedImage写为没有压缩的PNG?

    我需要将Buffered Image编写为.png而不执行压缩.我环顾四周,想出以下代码. public void save(String outFilePath) throws IOExceptio ...

  5. python3可视化窗口操作_Python3.x+PyQtChart实现数据可视化界面(PyQtChart绘图;还有保存图片)和业务逻辑分离案例01_自己写的,有UI界面源代码...

    [实例简介] Python3.x+PyQtChart实现数据可视化界面(PyQtChart绘图:还有保存图片)和业务逻辑分离案例01_自己写的,有UI界面源代码. [实例截图] [核心代码] wang ...

  6. java 与或_Java 语言中的逻辑与 () 和逻辑或 (||) 运算采用 方式进行运算。_学小易找答案...

    [单选题]明清时期,"龙门账"按经济业务性质进行分门别类的登记在账簿"进"."缴"."存"和"()" ...

  7. 逻辑漏洞——业务逻辑问题

    普及常见业务逻辑漏洞与测试业务逻辑漏洞方法 业务逻辑 不同的项目有不同的功能,不同的功能需要不同的实现,实现这些核心功能的代码就叫业务逻辑.   比如实现两个数求和功能,所写的如何获得任意给定的两个数 ...

  8. 企业应用业务需求变化的分析与应对-业务需求中的逻辑

    企业应用系统实际上就是用信息化技术对业务需求进行描述,借助计算机为企业用户服务的一个平台.应用系统必须要处理业务需求的变化,无论是开发阶段,还是维护阶段. 业务需求的变化其实就是逻辑的变化,那么业务需 ...

  9. java物理架构_Java应用架构读书笔记(1):物理设计与逻辑设计

    逻辑设计 几乎大部分帮助软件设计和架构的原则和模式主要都是关注逻辑设计.逻辑设计主要关于语言构造块,比如类,操作符,方法和包.识别一个类的方法,类之间的关系,系统包的接口等问题都是逻辑设计相关的问题. ...

最新文章

  1. 浪子回头,从学渣变成学霸,就了不起吗?
  2. 华为手机有没有html,华为手机,到底有没有自己的核心技术?看内行人怎么说...
  3. [elixir观察] GenStage 与 Flow
  4. Python函数的正确用法及其注意事项
  5. C#中小数点后保留两位小数,四舍五入的函数及使用方法
  6. 软件实施培训前的准备工作
  7. 黑客数字雨html单页,Hei客帝国数字雨.html
  8. bzoj 3055礼物运送 floyed + 状压DP
  9. Android 服务器推送技术
  10. Docker安装+镜像拉取+容器+创建镜像+push to docker hub
  11. Redmine管理项目1-自定义属性
  12. 更改Linux Shell的提示符
  13. 从小就对生意耳濡目染的小伙,长大后创业资产过亿
  14. clickhouse之数据存储:JBOD vs RAID
  15. 关于Windows分盘的操作
  16. 计算机风景画作品,电脑风景画图片
  17. 安装好maya后运行不了并弹出如图的错误
  18. oracle数据库导出灰色_Oracle数据库导入导出命令总结
  19. 5.31 综合案例2.0 - 在线音乐盒
  20. 裸金属服务器是什么?有什么特点?

热门文章

  1. 用cpp画出哆啦A梦
  2. 蓝牙BLE4.0-HM-10设备配对指南
  3. 阅读笔记——2019_004 A SURVEY OF TECHNIQUES FOR EVENT DETECTION IN TWITTER
  4. PDF Expert for mac(专业的PDF编辑器) 中文版
  5. 使用 Sublime、WebStorm 开发 Jade
  6. itertools:Python3迭代库(持续更新ing...)
  7. php表格怎么导成excel,cad表格如何导出到excel
  8. LMS Virtual.Lab二次开发:声学仿真结果导出方法(VBScript、Python)
  9. 近世代数 笔记与题型连载 第八章(置换群)
  10. 2.QT+Opencv读取图片