当前位置: 首页 > news >正文

Spring框架温习

Spring 特征

Spring是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。

Spring 特点:

轻量级、控制反转、面向切面、容器、框架集合
在这里插入图片描述

Spring 核心组件:

在这里插入图片描述

Spring 常用模块:

在这里插入图片描述

Spring 主要包:

在这里插入图片描述

Spring常用注解:

在这里插入图片描述

Spring第三方整合:

在这里插入图片描述

Spring IOC 原理

Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。

Spring 容器高层视图

Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的 Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准备就绪的运行环境。其中 Bean 缓存池为 HashMap 实现。

在这里插入图片描述

Spring APO 原理

概念
“横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect”,即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

AOP 主要应用场景有:
  1. Authentication 权限
  2. Caching 缓存
  3. Context passing 内容传递
  4. Error handling 错误处理
  5. Lazy loading 懒加载
  6. Debugging 调试
  7. logging, tracing, profiling and monitoring 记录跟踪 优化 校准
  8. Performance optimization 性能优化
  9. Persistence 持久化
  10. Resource pooling 资源池
  11. Synchronization 同步
  12. Transactions 事务
AOP 核心概念

1、切面(aspect):类是对物体特征的抽象,切面就是对横切关注点的抽象
2、横切关注点:对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点。
3、连接点(joinpoint):被拦截到的点,因为 Spring 只支持方法类型的连接点,所以在 Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器。
4、切入点(pointcut):对连接点进行拦截的定义
5、通知(advice):所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类。
6、目标对象:代理的目标对象
7、织入(weave):将切面应用到目标对象并导致代理对象创建的过程
8、引入(introduction):在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段。

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 大学校园广播“录编播”与IP广播系统技术方案
  • [240527] 谷歌 CEO 承认 AI 编造虚假信息问题难解(此文使用 @gemini 命令二次创作)| ICQ 停止运作
  • 【Linux】-Flink分布式内存计算集群部署[21]
  • Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)
  • DFS:解决二叉树问题
  • 返回枚举类给前端
  • Vue.js条件渲染与列表渲染指南
  • linux设置不记录历史命令
  • Three.js 研究:3、创建一个高科技圆环
  • web前端项目已有阿里巴巴图标基础上,再次导入阿里巴巴图标的方法
  • 第十章:C# 运算符
  • 【数组】Leetcode 228. 汇总区间【简单】
  • 【C语言】实现贪吃蛇--项目实践(超详细)
  • 安卓开发:相机水印设置
  • 【JAVA WEB实用与优化技巧】如何自己封装一个自定义UI的Swagger组件,包含Swagger如何处理JWT无状态鉴权自动TOKEN获取
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 2017 年终总结 —— 在路上
  • 2019年如何成为全栈工程师?
  • C++类中的特殊成员函数
  • HashMap剖析之内部结构
  • LeetCode算法系列_0891_子序列宽度之和
  • ng6--错误信息小结(持续更新)
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • PHP 7 修改了什么呢 -- 2
  • TypeScript迭代器
  • Wamp集成环境 添加PHP的新版本
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 入口文件开始,分析Vue源码实现
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​ArcGIS Pro 如何批量删除字段
  • #android不同版本废弃api,新api。
  • #Linux(Source Insight安装及工程建立)
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (C语言)fgets与fputs函数详解
  • (javaweb)Http协议
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (学习日记)2024.01.19
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .cfg\.dat\.mak(持续补充)
  • .net core 6 集成和使用 mongodb
  • .NET Core 成都线下面基会拉开序幕
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net反编译工具
  • .NET文档生成工具ADB使用图文教程
  • .Net中ListT 泛型转成DataTable、DataSet
  • @Service注解让spring找到你的Service bean
  • [ C++ ] 类和对象( 下 )
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • []Telit UC864E 拨号上网