Spring Web的项目结构

先上图,认识每一项。

首先可以看到,虚线外的部分主要是外部的请求、数据库、各种服务。

http request就是常见的来自Web端的请求。thrift request不知道的朋友有必要了解一下,thrift是facebook的中间件项目,一般是程序对程序静态的数据交换,对于大型系统中的内部大量的数据传输相对于JSON和xml无论在性能、传输大小上有明显的优势。

Controller直译是控制台,前后端的数据模型会在这里进行交互,进行数据的校验与处理,承前启后视为掌控全局。前端的请求在校验处理完毕后,如果有业务操作,则交给service层进行相应的逻辑处理。如果service需要与数据库的支持,则调用DAO层来获取与存储数据,所以DAO层里面也是service,不过是用来和数据库交互的。了解数据库的话就会知道,只与数据持久层进行交互式效率最高的,是我们业务中追求的;这里我们用了基于持久层的MyBatis(plus)来简化代码,它支持定制化 SQL、存储过程以及高级映射。我个人喜欢用MyBatis支持我所有的单表查询,在复杂的连表查询中我倾向自己编写mapper,这样在查询发生变化和优化的时候更方便修改、性能也更好。这样做的缺点就是数据库发生变更时可能要修改的量会大。我主要技术方向是数据分析,所以我还是更倾向于优化数据模型来避免复杂的查询。图中的Manager大部分是自带的,我认为是在涉及性能问题是才需要去深入。

在阿里巴巴编码规约: 

  • 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类来传输。

懂英文的朋友建议记住英文全称,这样它会在你的记忆宫殿里更加形象化,在初期的编程中架构就非常清晰,比如看到大佬的Vo文件,自动默念View Object,视觉 对象,目的就一目了然了。我第一次看到各种O的时候就非常的晕。这里忍不住提一嘴,工作的时候虽然重在代码能力但是面试的时候就“考概念”。概念一次次的加深印象不但会让人设计架构时更有章法还会给面试带来实质的好处。

全文参考:zangcunmiao的博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值