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

String AOP、事务、缓存

Spring AOP

Spring AOP,面向切面编程 Aspect Orinted Programming

传统:纵向编程(垂直编程)

也就是写代码从上往下写的:

在这里插入图片描述

切面:横向编程,批量操作。

指的是目前有三个类,想统计一下这三个类中的代码一共执行了多少时间 。如果单独计算,再求和,可以统计出来,但是如果项目有很多个类,那么需要写很多次,比较麻烦,而且会出现代码侵入问题 ,这是不良好的实现。

在这里插入图片描述
所以出现了面向切面编程:(都是横向切入的批量操作

在任意位置同时横向(水平)切入一些代码 ,不需要的时候随时能去掉这部分代码。在业务类中看不在,是在别的地方写的。切向编程使用的原理:动态代理。

那什么是代理呢?

基于代理模式(对目标业务进行改变或增强)。代理(替代另外一个“人/业务”的工作,代理过程中对目标业务进行改变或者增强,但是对外提供的接口不变,对外用户无感知):分为静态代理和动态代理

怎么理解代理 ?

代理的理解 :比如用户去火车站/高铁站买票,用户可以去火车站线下售票点买票,也可以线上买票,用户最终拿到的都是票,对用户的结果是 一样的。但是其实火车站线下售票处可能对售票做了增强,比如出票速度可能更快,或者票价更贵 ,这就是代理模式。

代理模式:

分为静态代理和动态代理。

一、静态代理。(用的很少 )

静态代理就是在程序编译运行之前 ,代理业务就已经创立确定,可以预测了

  1. 手动编码。
  2. 使用jaspect注解自动生成。

二、动态代理

动态代理就是必须在程序跑起来之后,在内存中创建的代理。是在程序运行期间创建的。

动态代理是在程序运行期间,创建目标类的代理实例。

  1. JDK动态代理:无需引入第三方库,jdk默认支持。要求:代理类必须实现接口。

  2. Cglib动态代理:原理基于继承。要求目标类以及目标方法不能是final的。

AOP和Spring AOP总结

AOP:面向切面编程,主要通过代理模式来实现。切字段,切方法,切一切。

Spring AOP:仅限对方法进行切面,在方法的前,后,或者前后切入代码。
1.引入aop依赖。
2.定义切面类,切入点和通知(Advice)

事务处理与Spring缓存(基于Spring aop)

事务:数据库的概念。一个sql批量执行的不可分割的整体,要么同时执行成功,同时失败。
ACID:
一。原子性。二、一致性、三、隔离性、四、持久性。 原一隔持。

Connection conn = DrvierManager.getConnection()
conn.setAutoCommit(false); //设置不自动提交try {....conn.commit();//手动提交
} catch(Exception e) {conn.rollback();//回滚
}

事务:
1.引入spring-boot-starter-aop依赖。
2.在主启动类,或配置类上添加@EnableTransactionManagement注解。
3.在要开启事务的方法上添加@Transcational注解。

isolation:事务隔离级别,取决于数据库的支持。
1.读未提交:脏读。
2.读已提交:不可重复读。
3.可重复读:幻读。
4.串行化:排队执行。

从下往下,安全性递增,性能递减。

冒泡(传播)机制:和数据库无关,是spring有关。

其他详细介绍

http://www.dtcms.com/a/324247.html

相关文章:

  • 【18】OpenCV C++实战篇——【项目实战】OpenCV C++ 精准定位“十字刻度尺”中心坐标,过滤图片中的干扰,精准获取十字交点坐标
  • 力扣559:N叉树的最大深度
  • XGBoost算法在机器学习中的实现
  • C语言:指针(2)
  • Gin vs Beego vs Echo:三大主流 Go Web 框架深度对比
  • 前端开发中的常见问题与实战解决方案​
  • JS数组排序算法
  • scanpy单细胞转录组python教程(三):单样本数据分析之数据标准化、特征选择、细胞周期计算、回归等
  • 2025.8.10总结
  • 学生成绩管理系统的 SQL 表设计与多表查询实战
  • 部署一个免费开源的博客系统
  • 库的制作和原理
  • 双亲委派机制是什么?
  • 大模型工具集成四层架构:识别、协议、执行与实现
  • reinterpret_cast and static cast
  • Lua的数组、迭代器、table、模块
  • Elasticsearch 搜索模板(Search Templates)把“可配置查询”装进 Mustache
  • 从MySQL到大数据平台:基于Spark的离线分析实战指南
  • 重学React(四):状态管理二
  • Spark执行计划与UI分析
  • 【软考中级网络工程师】知识点之 DCC 深度剖析
  • 系统架构设计师备考之架构设计高级知识
  • 企业高性能web服务器——Nginx
  • App Trace 功能详解 (开发者视角)
  • IDEA 如何导入系统设置
  • 从0到1学LangChain之Agent代理:解锁大模型应用新姿势
  • 【机器学习深度学习】Embedding 模型详解:从基础原理到实际应用场景
  • Xstream反序列化,fastjson,jcakson靶场复现
  • 刑法视野下的虚拟财产属性争议:法律风险与市场潜力解析
  • ThinkPHP8学习篇(二):路由