框架的知识点整理

news2024/12/30 3:30:12

目录

1、什么是Spring框架?Spring框架有哪些主要模块? 

2 、 使用Spring框架有什么好处? 

3、Spring MVC 工作原理


1、什么是Spring框架?Spring框架有哪些主要模块? 

Spring框架是一个开源的轻量级的Java应用程序开发框架,提供了一系列的解决方案和工具来帮助开发者创建企业级应用程序。 Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发

(我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,这些模块是:核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块,如下图所示。Spring 的框架的主要目的就是简化 Java 后端开发工作。)

Spring框架之七大核心模块: 

原文链接:Spring---七大核心模块 - 小白知浅 - 博客园 (cnblogs.com)

核心容器(Spring core), Spring上下文(Spring context),Spring面向切面编程(Spring AOP),Spring DAO模块,Spring ORM模块,Spring Web模块,Spring MVC框架(Spring WebMVC)。

1. Spring Core:提供了框架的基本功能,包括依赖注入(Dependency Injection)和控制反转(Inversion of Control)等。
2. Spring AOP:提供了面向切面编程(Aspect-Oriented Programming)的支持,可以实现横切关注点的模块化。支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用。
3. Spring MVC:提供了一个基于模型-视图-控制器(Model-View-Controller)的Web应用程序开发框架,用于构建Web应用程序。

4. Spring上下文(Spring context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,如JNDI、EJB、电子邮件、国际化、校验和调度功能。

关于另一种说法:什么是 Spring 框架?Spring框架有哪些主要模块? - 程序媛的理想人生 - 博客园 (cnblogs.com) 

Spring 是什么框架? - 知乎 (zhihu.com)

2 、 使用Spring框架有什么好处? 

1、预定义模板

Spring框架提供了JDBC,Hibernate,JPA等技术的模板。因此,无需编写过多的代码。它隐藏了这些技术的基本步骤。

让我们以JdbcTemplate为例,您无需编写代码来处理异常,创建连接,创建语句,提交事务,关闭连接等。您只需要编写执行查询的代码。这样,它节省了大量的JDBC代码。

2、松耦合

由于依赖项注入,Spring应用程序松散耦合。

3、易于测试

依赖注入使测试应用程序更加容易。 EJB或Struts应用程序需要服务器来运行该应用程序,但Spring框架不需要服务器。

4、轻巧

Spring框架由于其POJO而轻巧实施。 Spring Framework不会强迫程序员继承任何类或实现任何接口。这就是为什么它被称为非侵入性的。

5、快速开发

Spring Framework的依赖注入功能及其对各种框架的支持使开发变得容易

6、强大的抽象

它为JavaEE规范(例如 JMS, JDBC, JPA and JTA提供了强大的抽象。

7、声明式支持

它为以下内容提供声明式支持: 缓存,验证,事务和格式。 

参考文章:Spring介绍及其优缺点(转载) - 知乎 (zhihu.com)

(15条消息) Spring简介、框架核心、优缺点、应用场景_spring框架_ThinkWon的博客-CSDN博客

什么是 Spring 框架?Spring框架有哪些主要模块? - 程序媛的理想人生 - 博客园 (cnblogs.com)

3、Spring MVC 工作原理

 (网络文章,找到了的比较全的网站,贴一下)

SpringMVC流程

1、 用户发送请求至前端控制器DispatcherServlet。

2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、 DispatcherServlet调用HandlerAdapter处理器适配器。

5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、 Controller执行完成返回ModelAndView。

7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、 ViewReslover解析后返回具体View。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、 DispatcherServlet响应用户。

SpringMVC中的核心组件
(1)前端控制器:DispactherServlet
(2)处理器映射器:HandlerMapping
(3)处理器适配器:HandlerAdapter
(4)处理器:Handler,
(5)视图解析器:ViewResolver
(6)视图:View
组件的介绍

  • 前端控制器:接收请求、响应结果,相当于转发器,它是SpringMVC框架最核心的组件,有了它就能减少其他组件之间的耦合度。(不需要程序员开发)
  • 处理器映射器:根据配置的映射规则(根据请求的URL),找到对应的处理器。(不需要程序员开发)
  • 处理器适配器:适配调用具体的处理器,并且执行处理器中处理请求的方法,执行完毕之后返回一个ModelAndView对象。
  • 处理器:(需要程序员手动开发)。
  • 视图解析器:会根据传递过来的ModelAndView对象进行视图解析,根据视图解析名解析称真正的视图View。(不需要程序员开发)
  • 视图:View是一个接口,它的实现类支持不同类型的视图。比如:JSP、freemarker、Thymeleaf等等。

原文链接:http://t.csdn.cn/sfXYo

SpringMVC工作原理 - 知乎 (zhihu.com)

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

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

相关文章

MySQL主从复制及读写分离(三十四)

目录 MySQL主从复制 一、概述 1、MySQL Replication优点: 二、MySQL复制类型 1、异步复制(Asynchronous repication) 2、全同步复制(Fully synchronous replication) 3、半同步复制(Semisynchronous…

【构造】CF1758 C

Problem - 1758C - Codeforces 题意&#xff1a; 思路&#xff1a; 思路&#xff1a; #include <bits/stdc.h>#define int long longusing namespace std;const int mxn2e510; const int mxe2e510;int N,x; int ans[mxn];void solve(){cin>>N>>x;if(N%x!0)…

1999-2021年30省平均受教育年限(含原始数据和具体计算过程)

1999-2021年30省平均受教育年限&#xff08;含原始数据和具体计算过程&#xff09; 1、时间&#xff1a;1999-2021年 2、范围&#xff1a;30省&#xff08;剔除西藏&#xff09; 3、计算方式&#xff1a;平均受教育年限&#xff08;未上学人数*0小学人数*6初中人数*9高中人数…

2023年7月第4周大模型荟萃

2023年7月第4周大模型荟萃 2023.7.31版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、Cerebras推出全球最强AI超算 AI芯片初创公司Cerebras Systems和总部位于阿联酋的技术控股集团G42于7月20日宣布&#xff0c;携手打造一个由互联的超…

pytorch学习——正则化技术——权重衰减

一、概念介绍 权重衰减&#xff08;Weight Decay&#xff09;是一种常用的正则化技术&#xff0c;它通过在损失函数中添加一个惩罚项来限制模型的复杂度&#xff0c;从而防止过拟合。 在训练参数化机器学习模型时&#xff0c; 权重衰减&#xff08;weight decay&#xff09;是…

【JavaEE初阶】Servlet(四) Cookie Session

文章目录 1. Cookie && Session1.1 Cookie && Session1.2 Servlet会话管理操作 1. Cookie && Session 1.1 Cookie && Session Cookie是什么? Cookie是浏览器提供的持久化存储数据的机制.Cookie从哪里来? Cookie从服务器返回给浏览器. 服务…

生产中出现CPU或者内存飙升如何进行解决

文章目录 定位CPU标高内存问题JVM参数工具 定位CPU标高 方法1&#xff1a; 1-启动&#xff1a;java -jar 2_cpu-0.0.1-SNAPSHOT.jar 8 > log.file 2>&1 & 2-一般来说&#xff0c;应用服务器通常只部署了java应用&#xff0c;可以top一下先确认&#xff0c;是否是…

Java 错误异常介绍(Exceptions)

1、异常介绍 异常是程序执行期间发生的意外事件。它影响程序指令流&#xff0c;从而导致程序异常终止。 发生异常的原因有很多。其中包括&#xff1a; 无效的用户输入 设备故障 网络连接丢失 物理限制&#xff08;磁盘内存不足&#xff09; 代码错误 打开一个不可用的文…

第四章:C语言的条件分支控制结构

文章目录 1、分支控制if..else...2、分支控制if..else if...else...(嵌套)3、Switch4、goto 1、分支控制if…else… 标准格式&#xff1a;if{}else{} {}里面的语句表示条件是否成立再决定是否执行 2、分支控制if…else if…else…(嵌套) 标准格式&#xff1a;if{}else if{}…

无人机调试笔记——常见参数

无人机的PID调试以及速度相关参数 1、Multicopter Position Control主要是用来设置无人机的各种速度和位置参数。调试顺序是先调试内环PID&#xff0c;也就是无人机的速度闭环控制&#xff0c;确认没有问题后再进行外环位置控制&#xff0c;也就是定点模式控制。 2、调试的时…

CentOS7.3 安装 docker

亲测、截图 阿里云服务器 文章目录 更新源2345 启动开机自启 更新源 sudo yum update -y2 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo4 sudo yum …

一款介于无代码和低代码之间的数据可视化平台

一、前言 随着企业数字化拉开序幕&#xff0c;低代码( Low Code Development)开发的概念开始火起来&#xff0c;即用少量的代码就能开发复杂的业务系统。然后更进一步&#xff0c;由此又催生出一个新的概念&#xff1a;无代码开发( No Code Development)。 低代码和无代码开发平…

【C++从0到王者】第十四站:list基本使用及其介绍

文章目录 一、list基本介绍二、list基本使用1.尾插头插接口使用2.insert接口使用3.查找某个值所在的位置4.erase接口使用以及迭代器失效5.reverse6.sort7.merge8.unique9.remove11.splice 三、list基本使用完整代码 一、list基本介绍 如下所示&#xff0c;是库里面对list的基本…

自然语言处理学习笔记(一)————概论

目录 1.自然语言处理概念 2.自然语言与编程语言的比较 &#xff08;1&#xff09;词汇量&#xff1a; &#xff08;2&#xff09;结构化&#xff1a; &#xff08;3&#xff09;歧义性&#xff1a; &#xff08;4&#xff09;容错性&#xff1a; &#xff08;5&#xff0…

【143. 重排链表】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不…

Redis (一)消息订阅和发送测试

〇、redis 配置 1、概况 本文基于 Ubuntu20.04 云服务器配置Redis&#xff0c;且在本地进行 Redis 测试。 2、目录概况 一、配置文件 位于 /config/app.yml 中&#xff0c;目的用于 Redis 初始化&#xff1a; redis:addr: "39.104.**.28:6379"password: "p…

盛元广通实验室教学仪器设备综合信息管理系统LIMS

实验室作为学生以及教师进行科研教学环境&#xff0c;对于实验室设备的使用情况、维护、借还、台账管理、盘点、报废等需要得到有效的管理&#xff0c;以促进科研教学工作的高质量开展&#xff0c;介于传统手动管理方式越发不能满足现代科研的飞速发展需要&#xff0c;实验室的…

【element-plus】 table表格每行圆角解决方案 element也通用

系列文章目录 【Vue3ViteTselement-plus】使用tsx实现左侧栏菜单无限层级封装 前言 我们在使用element-plus或element 的table时是否有时UI给到的UI效果是如下面这样的&#xff0c;但是我们翻遍了组件库的文档 调整了很多次样式 发现在 左右侧栏固定的时候 普通的方法是完全…

二阶阻尼弹簧系统的simulink仿真(s函数)

文章目录 前言一.非线性反步法1.原系统对应的s函数脚本文件&#xff08;仅修改模板的初始化函数、导数函数和输出函数三个部分&#xff09;2.控制器对应的s函数脚本文件&#xff08;仅修改模板的初始化函数和输出函数两个部分&#xff09;3.其他参数脚本文件4.输入5.输出&#…

【Git系列】分支操作

&#x1f433;分支操作 &#x1f9ca;1. 什么是分支&#x1f9ca;2. 分支的好处&#x1f9ca;3. 分支操作&#x1fa9f;3.1 查看分支&#x1fa9f;3.2 创建分支&#x1fa9f;3.3 切换分支 &#x1f9ca;4. 分支冲突&#x1fa9f;4.1 环境准备&#x1fa9f;4.2 分支冲突演示 &am…