【MarketAnalysis总结】1.0分层体系架构

2024-03-23 14:32

本文主要是介绍【MarketAnalysis总结】1.0分层体系架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MarketAnalysis项目十二月份已经全部完工了,之后一直忙于期末考试和其他课设,一直没把总结放上来;为了笔记不遗失也方便以后查找还是放上来吧。

这次项目,我花了比较多的心血在这上面,完整地跟进了整个项目,从开题之后每个阶段都紧跟着团队的脚步,也推动着团队往前走。在这个过程中,我收获了很多项目经验,不止是从技术层面,对于现有的web的技术从底层到最新都有个大概的了解了,更从团队合作中的获取了团队经验,包括项目管理的git使用以及体会到了分层体系架构给我带来的好处,还有日常与队友如何对接,沟通交流的经验,可以说是真的受益匪浅。

我在本次项目中负责的后端的工作有搭建Spring框架、搭建SpringMVC框架、从Strut2+Spring+Hibernate到SpringMVC+Spring+Hibernate的整合、对项目进行层次体系结构设计分层、用户权限控制、用户账户安全访问控制以及发送手机验证码模块。

我会把每一部分的工作都一一总结,这里先介绍对项目进行分层体系结构设计。

该项目通过SSH框架搭建,项目结构如下图1.1所示。



图1.1 项目框架图

后端之所以这样分层,原因在于把项目解耦,把模型、视图、控制分开,独立工作,方便团队合作编码与整合。其各层详细的作用描述如下:

1)   Controller(控制层)

控制层是整个项目的指挥中枢,主要控制页面间的跳转,接收前端的请求并分发请求,以及前后台数据的传输。前端所有的请求,都要汇集先到该层,再由控制层统一把需求分发到对应的业务逻辑层获取相应的服务,处理完毕后再经过控制层回复给前端。

前端请求到后端处理并返回的实现流程如下:

a)   前端通过url向后端发来请求以及数据,后端一直处在待接收请求的状态;

b)   通过匹配url分发到后端controller的一个函数,对该请求进行处理;

c)   所匹配的函数调用Service层对应的服务并处理加工数据后,Service层向controller返回一个结果,再由controller应答前端。

  • Interceptor(拦截层)

拦截层是在Controller层之前的一层,它可以在某些特定的请求(可以自己设计)到达控制层之前拦截下来,对其进行权限校验、身份校验、合法性检查、避免过量请求涌入等操作。

在本次项目中,拦截层主要做了对下载权限、查询权限的校验、是否在登录状态访问的控制、以及检查前端请求是否合法的工作。每一个功能分别如下图1.2对应的DownloadInterceptor、QueryInterceptor、LoginInterceptor和AfterLoginInterceptor、IndexInterceptor五个类。


图1.2 拦截层

2)   Service(业务逻辑层)

业务逻辑层也称服务层,是控制层的下一层,负责接收来自控制层分发的需求,为其提供相应的服务的,例如数据加工处理。

Service层负责的工作流程如下:

a)   控制层调用service层相应的服务,并传入要处理的原始数据;

b)   Service层接收到原始数据,开始对数据进行加工,调用DAO层提供的接口,对数据库进行操作;

c)   处理完毕后返回加工后的数据给controller。

3)   DAO(数据库访问层)

数据库访问层顾名思义是负责对数据库访问的操作的,是Service层的下一层。它不包含业务逻辑,主要封装了对数据库的连接、关闭、增删查改等操作,以便给它的上一层Service提供相应的数据库服务,是较底层的一层。

4)   Cache(缓存层)

缓存层主要负责对已查询过的数据进行缓存,并定时刷新。该层的作用是解决对大量数据的查询有很大的时间开销问题。

5)   Entity(实体层)

实体层是最底层的一层,直接对应数据库的表。该层封装着每张表的Javabean(对应着一个个类),以及对应的映射配置文件。它负责把数据库里的表映射到Javabean,以便DAO对数据库操作。

至此,我详细地介绍了每一层的作用,以及为什么这样分层。由于前端的各层作用不是我负责的范围,故在此不做过多赘述。






这篇关于【MarketAnalysis总结】1.0分层体系架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838598

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手