Java开发手册之应用分层「建议收藏」

Java开发手册之应用分层「建议收藏」Java开发手册之应用分层

大家好,又见面了,我是你们的朋友全栈君。

  1. 【推荐】图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于
    Web层,也可以直接依赖于Service层,依此类推:
    在这里插入图片描述
  • 开放接口层:可直接封装Service方法暴露成RPC接口;通过Web封装成http接口;进行网关安全控制、流量控制等。
  • 终端显示层:各个端的模板渲染并执行显示的层。当前主要是velocity渲染,JS渲染,
    JSP渲染,移动端展示等。
  • Web层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
  • Service层:相对具体的业务逻辑服务层。
  • Manager层:通用业务处理层,它有如下特征:
    1) 对第三方平台封装的层,预处理返回结果及转化异常信息;
    2) 对Service层通用能力的下沉,如缓存方案、中间件通用处理;
    3) 与DAO层交互,对多个DAO的组合复用。
  • DAO层:数据访问层,与底层MySQL、Oracle、Hbase等进行数据交互。
  • 外部接口或第三方平台:包括其它部门RPC开放接口,基础平台,其它公司的HTTP接口。
  1. 【参考】 (分层异常处理规约)在DAO层,产生的异常类型有很多,无法用细粒度的异常进
    行catch,使用catch(Exception e)方式,并throw new DAOException(e),不需要打印日志,因为日志在Manager/Service层一定需要捕获并打到日志文件中去,如果同台服务器再打日志,浪费性能和存储。在Service层出现异常时,必须记录出错日志到磁盘,尽可能带上参数信息,相当于保护案发现场。如果Manager层与Service同机部署,日志方式与DAO 层处理一致,如果是单独部署,则采用与Service一致的处理方式。Web层绝不应该继续往上抛异常,因为已经处于顶层,如果意识到这个异常将导致页面无法正常渲染,那么就应该直接跳转到友好错误页面,加上用户容易理解的错误提示信息。开放接口层要将异常处理成错误码和错误信息方式返回。
  2. 【参考】分层领域模型规约:
  • DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
  • DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
  • BO(Business Object):业务对象。由Service层输出的封装业务逻辑的对象。
  • AO(Application Object):应用对象。在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
  • VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。
  • Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106512.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux挂载磁盘出现只读的问题

    Linux挂载磁盘出现只读的问题由于挂载的是windows下使用的磁盘,是NTFS分区格式,使用mount查看当前挂载的设备,发现磁盘/dev/sdb2属性为ro,也就算readonly,使用如下命令修复即可:sudontfsfix/dev/sdb2修复成功出现NTFSpartition/dev/sda2wasprocessedsuccessfully.然后再修改磁盘读写属性:(好像也可以不改属性,使用unmount卸载掉磁盘后再挂载磁盘即可)mount-orw/dev/sda2/mnt/sda2参

    2022年6月19日
    23
  • Vue跨域问题终解决「建议收藏」

    Vue跨域问题终解决「建议收藏」config->index.js->dev->proxyTable{}修改proxyTable{}为:proxyTable:{‘/api’:{//虚拟目录target:’http://localhost:8081′,//后台NodeSpringboot项目的请求网址changeOrigin:true,…

    2022年9月17日
    0
  • java中接口的定义与实现

    java中接口的定义与实现

    2021年12月6日
    37
  • 12厂商中标中移动TD终端研发

    12厂商中标中移动TD终端研发

    2021年8月8日
    73
  • python爬虫代码运行_怎么运行python爬虫程序

    python爬虫代码运行_怎么运行python爬虫程序python 爬虫程序运行有两种方式 1 在 python 交互式命令行下直接输入 python 代码回车运行 2 在命令行中使用 python 文件名 py python 运行有两种方式 一种是在 python 交互式命令行下运行 另一种是使用文本编辑器 在命令行中直接运行 注意 以上两种运行方式 都是以 CPython 解释器来编译运行的 当然也可以将 python 代码写入到 eclipse 中 使用 JPython 解

    2025年6月3日
    0
  • 【Cover Letter 】SCI 投稿加分必备,手把手教你写 投稿Cover Letter

    【Cover Letter 】SCI 投稿加分必备,手把手教你写 投稿Cover LetterCoverLetter是我们投稿时,与手稿一同发送给编辑的投稿信。一封内容简洁的投稿信,会让编辑对你文章的第一印象加分不少。今天,我们一起来学习一下,一篇给文章加分的投稿信应该怎么写。投稿信的内容主要包含文章的标题、类型,没有一稿多投的声明,文章的主要内容及亮点,还有通讯作者的信息。敲黑板!一篇投稿信最重要的两点,是语言简洁和符合期刊标准。所以,要想写好投稿信,我们务必要了解各…

    2022年4月30日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号