应用分层简介

一、什么是应用分层

应用分层是一种软件开发设计思想,它将应用程序分为多个层次,每个层次各司其职,多个层次之间协同提供完整的功能,根据项目的复杂程度,将项目分为三层或者更多层。

常见的MCV设计模式,就是应用分层的一种具体体现。

二、为什么要分层

当项目过于复杂时,大量代码混杂在一起,会出现逻辑不清,各模块相互依赖,代码扩展性差,修改时很容易改一处而动全身等情况,所以引入程序分层是很有必要的。

三、如何分层(以三层架构为例)

MVC将整体分为了Model(模型),View(视图),Controller(控制器)三个层次,也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现了表现和逻辑的解耦合,是一种标准的软件分层架构。

目前更主流的开发方式是"前后端分离"的方式,后端开发师不必关注前端的实现,所以对于后端开发来说,又有了一种新的分层架构:将整体架构分为表现层、业务逻辑层、数据层。

**1.表现层/控制层(Controller):**展示数据结果和接受用户指令并返回响应,是最靠近用户的一层。

**2.业务逻辑层(Service):**负责处理业务逻辑,里面有复杂业务的具体实现。

**3.数据层/数据访问层(Dao):**负责存储和管理与应用程序相关的数据。

MVC和三层架构的区别和联系:

关于二者关系,说法不一,但是从概念上来说,二者都是软件工程领域中的架构模式,MVC由三部分构成:模型(Model)、视图(View)、控制器(Controller),三层架构将业务应用分为表现层,业务逻辑层,数据访问层。

MVC中,视图和控制器合起来对应三层架构中的表现层,模型对应三层架构中的业务逻辑层,数据层以及实体类。

二者只是从不同角度对软件工程进行了抽象。

MVC强调视图和数据的分离,将数据展示和数据处理分开,通过控制器对二者进行结合。

三层架构强调不同维度数据处理的高内聚和低耦合,将交互页面、业务处理和数据库操作的逻辑分开。

但是二者的目的都是相同的:"解耦,分层,代码复用"。

四、应用分层的好处

1.降低层与层之间的依赖,结构更加的明确,利于各层逻辑的复用。

2.开发人员可以只关注整个结构的其中的某一层,降低了维护成本和维护时间。

3.可以较为容易的使用新的实现来替换原有层次的实现。

4.有利于标准化。

五、企业规范

1.类名使用大驼峰命名方式,但这些情况除外:DO/BO/DTO/AO

2.方法名、参数名、成员变量、局部变量统一使用小驼峰命名方式。

3.包名统一使用小写,点分隔符之间有且仅有一个自然语义的英文单词。

六、一些学习Web开发的注解

1.@RequestMapping:路由映射。

2.@RequestParam:后端参数重命名。

3.@RequestBody:接受JSON类型的参数。

4.@PathVariable:接收路径参数。

5.@ResponseBody:返回数据。

6.@CookieValue:从Cookie中获取值。

7.@SessionAttribute:从Session中获取数据。

8.@RequestHeader:从Header中获取数据。

9.@Controller:定义一个控制器,Spring框架启动时加载,把这个对象交给Spring管理,默认返回视图。

10.@RequestPart:上传文件。

11.@RestController:等于@ResponseBody+@Controller返回数据。

Cookie和Session区分:

Cookie和Session都是会话机制,Cookie是客户端机制,Session是服务端机制,二者通过SessionId来关联,SpringMVC中内置HttpServletRequest,HttpServletResponse两个对象,需要使用时,直接在方法中添加对应的参数即可,Cookie和Session可以从HttpServletRequest中来获取,也可以使用HttpServletResponse设置Http响应状态码。

相关推荐
smileNicky8 小时前
SpringBoot系列之从繁琐配置到一键启动之旅
java·spring boot·后端
long3169 小时前
java 策略模式 demo
java·开发语言·后端·spring·设计模式
柏油10 小时前
Spring @Cacheable 解读
redis·后端·spring
柏油11 小时前
Spring @TransactionalEventListener 解读
spring boot·后端·spring
小小工匠12 小时前
Maven - Spring Boot 项目打包本地 jar 的 3 种方法
spring boot·maven·jar·system scope
白露与泡影14 小时前
Spring容器初始化源码解析
java·python·spring
板板正14 小时前
Spring Boot 整合MongoDB
spring boot·后端·mongodb
泉城老铁15 小时前
在高并发场景下,如何优化线程池参数配置
spring boot·后端·架构
泉城老铁15 小时前
Spring Boot中实现多线程6种方式,提高架构性能
spring boot·后端·spring cloud
hrrrrb16 小时前
【Java Web 快速入门】九、事务管理
java·spring boot·后端