spring框架之AOP

1. AOP相关概念

1.1 AOP概述

​ 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率 。

1.2 AOP的作用及优势

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

1.3 AOP的实现方式

​ 使用动态代理技术。

  • 动态代理的特点

    • 字节码随用随创建,随用随加载。 它与静态代理的区别也在于此。因为静态代理是字节码一上来就创建好,并完成加载。
  • 动态代理常用的两种方式

    • 基于接口的动态代理

      • 提供者:JDK官方的Proxy类。
      • 要求:被代理类最少实现一个接口。
      • 方式:使用JDK官方的Proxy类创建代理对象。
    • 基于子类的动态代理

      • 提供者:第三方的CGLib,如果报asmxxxx异常,需要导入asm.jar。
      • 要求:被代理类不能用final修饰的类(最终类)。
      • 方式:使用CGLib的Enhancer类创建代理对象。

2. Spring中的AOP

2.1 概述

Spring 框架的一个关键组件是面向方面的编程(AOP)框架。面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样的常见的很好的方面的例子,如日志记录、审计、声明式事务、安全性和缓存等。

2.2 AOP相关术语

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

2.3 通知类型

通知类型描述
前置通知在一个方法执行之前,执行通知。
后置通知在一个方法执行之后,不考虑其结果,执行通知。
最终通知在一个方法执行之后,只有在方法成功完成时,才能执行通知。
异常通知在一个方法执行之后,只有在方法退出抛出异常时,才能执行通知。
环绕通知在建议方法调用之前和之后,执行通知。

2.4 基于XML的AOP配置

2.4.1 配置事务管理器

2.4.2 配置事务的通知引用事务管理器

2.4.3 配置事务的属性

2.4.4 配置AOP切入点表达式

2.4.5 配置切入点表达式和事务通知的对应关系

2.5基于注解的AOP配置

2.5.1 配置事务管理器

2.5.2 在业务层使用@Transactional注解

2.5.3 在配置文件中开启spring对注解事务的支持

<!-- 开启spring对注解事务的支持 --> <tx:annotation-driven transaction-manager="transactionManager"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值