spring框架_AOP和注解

1.什么是AOP :全称是Aspect Oriented Programming即:面向切面编程。

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

2.AOP的作用及优势

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

3.AOP的实现方式使用动态代理技术

4.动态代理的特点和方式

特点 :

字节码随用随创建,随用随加载。
它与静态代理的区别也在于此。因为静态代理是字节码一上来就创建好,并完成加载。
装饰者模式就是静态代理的一种体现。

方式 :

基于接口的动态代理
提供者:JDK官方的Proxy类。
要求:被代理类最少实现一个接口。
基于子类的动态代理
提供者:第三方的CGLib,如果报asmxxxx异常,需要导入asm.jar。
要求:被代理类不能用final修饰的类(最终类)

5.Spring中AOP的细节

AOP相关术语 :

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

当看到这些术语时,我是懵逼的,如何去理解这些术语,这是一个问题?所以需要借助图来解释.

 1.切入点 :你可以理解为result方法的调用,对当前方法的调用,也相当于切入点(增强方法)

2.连接点 : 因为除了增强的方法,还有未增强的方法,这些方法统称为连接点

3.通知/增强 : 这个在上图已经很明显的表示了

4.引介 :可以理解为增强的方法的代码

5.织入 :可以理解为增强方法的过程

6.代理 : 这个可以理解为织入过后的就会产生一个代理类

7.切面 : 切入点和通知的结合

6.基础xml的声明式事务控制

6.1 搭建环境 :

第一步:创建maven工程并导入坐标 

第二步:创建spring的配置文件并导入约束

第三步:准备数据库表和实体类

第四步:编写业务层接口和实现类

第五步:编写Dao接口和实现类

第六步:在配置文件中配置业务层和持久层对 

6.2 配置步骤

第一步:配置事务管理器

第二步:配置事务的通知引用事务管理器

第三步:配置事务的属性

第四步:配置AOP切入点表达式

第五步:配置切入点表达式和事务通知的对应关系

7.基础注解的配置方式

将相关的XML配置依次用注解代替

实在不忍心吐槽自己,上面编辑器的功能一个没看......懒得重新写了





  



猜你喜欢

转载自www.cnblogs.com/d1320/p/10982182.html