阿里Java开发手册~应用分层

news2024/9/24 19:21:37
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 接口。
2. 【参考】 分层异常处理规约 DAO 层,产生的异常类型有很多,无法用细粒度的异常进
catch ,使用 catch(Exception e) 方式,并 throw new DAOException(e) ,不需要打印
日志,因为日志在 Manager / Service 层一定需要捕获并打到日志文件中去,如果同台服务器
再打日志,浪费性能和存储。在 Service 层出现异常时,必须记录出错日志到磁盘,尽可能带
上参数信息,相当于保护案发现场。如果 Manager 层与 Service 同机部署,日志方式与 DAO
层处理一致,如果是单独部署,则采用与 Service 一致的处理方式。 Web 层绝不应该继续往上
抛异常,因为已经处于顶层,无继续处理异常的方式,如果意识到这个异常将导致页面无法正常
渲染,那么就应该直接跳转到友好错误页面,加上友好的错误提示信息。开放接口层要将异常
处理成错误码和错误信息方式返回。
3. 【参考】分层领域模型规约:
DO Data Object :与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
DTO Data Transfer Object :数据传输对象, Service Manager 向外传输的对象。
BO Business Object :业务对象。可以由 Service 层输出的封装业务逻辑的对象。
Query :数据查询对象,各层接收上层的查询请求。注:超过 2 个参数的查询封装,禁止
使用 Map 类来传输。
VO View Object :显示层对象,通常是 Web 向模板渲染引擎层传输的对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/798288.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

600就能用上7000MHz的DDR5内存,这套32GB的光威天策真是快又稳

大家都知道,DDR5内存性能提升很大,而且Intel 13代平台和AMD Zen 4平台都已经兼容了,可以带来更稳定的性能表现,之前因为DDR5内存价格高昂,许多消费者望而却步,而随着今年DDR5内存售价的逐渐下降&#xff0c…

css3的filter图片滤镜使用

业务介绍 默认:第一个图标为选中状态,其他三个图标事未选中状态 样式:选中状态是深蓝,未选中状体是浅蓝 交互:鼠标放上去选中,其他未选中,鼠标离开时候保持当前选中状态 实现:目前…

Docker的数据管理和Dockerfile的指令

Docker的数据管理 一、Docker数据的概念1、数据卷2、数据卷容器 二、端口映射三、容器互联(使用centos镜像)四、Docker 镜像的创建1、基于现有镜像创建(1)首先启动一个镜像,在容器里做修改(2)然…

经营在线业务的首选客服工具--SS客服

随着网购正在快速取代传统零售业,各行各业的企业都在大力发展电子商务以取悦客户。但是,有这么多可用的电子商务平台,选择一款符合自己发展的平台确实不容易。电子商务平台不仅是企业在线销售产品和服务的地方,也是他们管理日常运…

Vue2基础三、计算属性侦听器

零、文章目录 Vue2基础三、计算属性&侦听器 1、计算属性computed (1)基础语法 概念: 基于现有的数据,计算出来的新属性。 依赖的数据变化,自动重新计算。计算属性会对计算出来的结果缓存,再次使用…

Linux三剑客与正则

目录 正则表达式 text测试文件 正则符号分类 基础正则符号 正则表达式的贪婪性 扩展正则符号 linux三剑客 三剑客特点及应用场景 grep sed sed命令执行过程 sed查找script sed删除script sed增加script 具体功能 具体script sed替换script 后向引用 awk aw…

虹科新闻 | 虹科与Berghof正式建立合作伙伴关系

近日,虹科与德国Berghof公司达成战略合作,虹科正式成为Berghof Automation在大中华区的认证授权代理商。未来,虹科将携手Berghof一同为机器制造商、系统集成商和工业设备制造商提供先进的解决方案,从而在最小的空间内实现最高的性…

vue项目:SyntaxError: Unexpected token ‘:‘

运行项目时出现了如下问题: 经过排查,是因为代码中使用了ts(TypeScript)的写法: 解决办法:在script标签加上 lang“ts” 即可

软件设计师学习第一章

计算机组成与体系结构(6分) 内容概述 数据的表示 进制转换 R 进制转十进制使用按权展开法,其具体操作方式为:将 R 进制数的每一位数值用 Rk 形示,即幂的底数是 R ,指数为 k , k 与该位和小数点…

uniapp 选择城市定位 根据城市首字母分类排序

获取城市首字母排序&#xff0c;按字母顺序排序 <template><view class"address-wrap" id"address"><!-- 搜索输入框-end --><template v-if"!isSearch"><!-- 城市列表-start --><view class"address-sc…

DevOps-Git

DevOps-Git 版本控制软件提供完备的版本管理功能&#xff0c;用于存储&#xff0c;追踪目录&#xff08;文件夹&#xff09;和文件的修改历史。版本控制软件的最高目标是支持公司的配置管理活动&#xff0c;最终多个版本的开发和维护活动&#xff0c;即使发布软件。 git安装 h…

Python获取天气数据 并做可视化解读气象魅力

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 前几天的长沙&#xff0c;白天大太阳&#xff0c;晚上下暴雨 一点也琢磨不透天气老人家它的想法 顺便哔哔一点生活小插曲&#xff1a; 前几天的时候&#xff0c;我出门&#xff0c;家里的几扇窗户开着在透气 等我十一点回…

了解Unity编辑器之组件篇Layout(八)

Layout&#xff1a;用于管理和控制UI元素的排列和自动调整一、Aspect Ratio Fitter&#xff1a;用于根据宽高比自动调整UI元素的大小 Aspect Mode&#xff1a;用于定义纵横比适配的行为方式。Aspect Mode属性有以下几种选项&#xff1a; &#xff08;1&#xff09;None&#xf…

开源预训练框架 MMPRETRAIN现有的推理模型(三)

推理器类型&#xff1a; &#xff08;1&#xff09;ImageClassificationInferencer&#xff1a;对给定图像进行图像分类。 &#xff08;2&#xff09;ImageRetrievalInferencer&#xff1a;从给定图像集上的给定图像执行图像到图像检索。 &#xff08;3&#xff09;ImageCapti…

FS32K144用官方Bootloader为底层用RAppIDL BL Tool工具下载升级程序

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ 一、工具问题 1、可以在NXP的官网上找到这个软件&#xff0c;也可以加载完成NXP的官方库后找到它&#xff08;自动安装的&#xff09;&#xff0c;也可我…

【接口测试】Postman--变量与集合

目录 变量与集合 一、变量 1、环境变量&#xff08;1&#xff09;创建环境变量&#xff08;2&#xff09;管理环境变量&#xff08;3&#xff09;选择与编辑环境变量2、全局变量&#xff08;1&#xff09;管理全局变量二、集合 1、创建集合2、保存请求到集合3、分享集合三、集…

链表是否有环、环长度、环起点

问题引入 如何检测一个链表是否有环&#xff0c;如果有&#xff0c;那么如何确定环的长度及起点。 引自博客&#xff1a;上述问题是一个经典问题&#xff0c;经常会在面试中被问到。我之前在杭州一家网络公司的电话面试中就很不巧的问到&#xff0c;当时是第一次遇到那个问题&…

【数据结构】实验一:绪论

实验一 绪论 一、实验目的与要求 1&#xff09;熟悉C/C语言&#xff08;或其他编程语言&#xff09;的集成开发环境&#xff1b; 2&#xff09;通过本实验加深对算法时间复杂度的理解&#xff1b; 3&#xff09;结合具体的问题分析算法时间复杂度。 二、实验内容 设计程…

C# PaddleDetection 目标检测 ( yolov3_darknet)

效果 项目 VS2022.net4.8OpenCvSharp4Sdcb.PaddleDetection 代码 using OpenCvSharp; using OpenCvSharp.Extensions; using Sdcb.PaddleDetection; using Sdcb.PaddleInference; using System; using System.Drawing; using System.Windows.Forms; using YamlDotNet;namespa…

vue实现循环数据动态添加标签以及单独控制显示隐藏

效果图&#xff1a; html: <table class"tag-table"><tbody><tr v-for"(item, index) in form.tagList" :key"index"><td>333</td><td><divclass"tag-box"v-for"(item1, index1) in it…