框架---Spring基础代码(下)(AOP)

详见 第3,4个代码文件夹
代码库也可见
https://blog.csdn.net/ncepu_Chen/article/details/94857481

AOP =
把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,
对我们的已有方法进行增强。

作用:
	在程序运行期间,不修改源码对已有方法进行增强。
优势:
	减少重复代码
	提高开发效率
	维护方便
	
AOP 的实现方式:
	动态代理

整个流程:
	a、开发阶段(我们做的)
		编写核心业务代码(开发主线):大部分程序员来做,要求熟悉业务需求。
		把公用代码抽取出来,制作成通知。(开发阶段最后再做):AOP 编程人员来做。
		在配置文件中,声明切入点与通知间的关系,即切面。:AOP 编程人员来做。
	b、运行阶段(Spring 框架完成的)
		Spring 框架监控切入点方法的执行。
		一旦监控到切入点方法被运行,使用代理机制,动态创建目标对象的代理对象,
		根据通知类别,在代理对象的对应位置,将通知对应的功能织入,
		完成完整的代码逻辑运行。

1.AOP 的 术语


Joinpoint(连接点):
	所谓连接点是指那些被拦截到的点。
	在 spring 中,这些点指的是  
	方法,  因为 spring 只支持方法类型的连接点。
	
Pointcut(切入点):
	所谓切入点是指我们要 对哪些  Joinpoint=方法 进行拦截  的定义。

Advice(通知=增强):
	所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。
	通知的类型:
		前置通知,后置通知,异常通知,最终通知,环绕通知。
		
Introduction(引介):
	引介是一种特殊的通知在不修改类代码的前提下,
	Introduction 可以在运行期为类 动态地添加一些 方法或 Field。
	
Target(目标对象):
	代理的目标对象。
	
Weaving(织入):
	是指把增强应用到目标对象来创建新的代理对象的过程。
	spring采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。
	
Proxy(代理):
	一个类被 AOP 织入增强后,就产生一个结果代理类。
	
Aspect(切面):
	是切入点和通知(引介)的结合

实际开发中 切入点表达式 的通常写法:
切到 业务层 实现类下的所有方法

* com.itheima.service.impl.*.*(..)

 访问修饰符  返回值  包名.包名.包名...类名.方法名(参数列表)
 访问修饰符可以省略

写CRUD时,每个对数据库的操作
都创建了1个 连接,
每个连接 都提交了事务,
当中间有一行代码出问题,下1个事务提交失败 金额就出了纰漏
在这里插入图片描述解决思路:
ThreadLocal 可以拿到1个connection
把此connection和 当前线程 绑定到一起就可以。
在这里插入图片描述在java中,除了static和单例是共享变量,其余的都是线程私有的。(关于ThreadLocal详见收藏查漏补缺夹)
可以对ThreadLocal中的connection get、set、remove

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值