Spring-AOP

AOP概述

1.什么是AOP:
AOP就是面向切面编程,是Spring框架的核心。
2.AOP底层的实现原理:
动态代理分为:
JDK动态代理:基于接口的动态代理
Cglib动态代理:基于类的动态代理
3.AOP作用:
在不更改源码的情况下,去动态的增强对象的一些功能

AOP相关术语

Spring的AOP的实现底层实现就是对于动态代理的实现的代码进行了封装,封装之后我们只需要对需要关注的部分进行代码编写,并且通过配置的方式完成指定的目标的方法的增强。
Target(目标对象):代理目标的对象
Proxy(代理):一个类被AOP织入增强后,就会产生一个代理的结构类
Joinpoint(连接点):指那些被拦截到的点,在spring中指的是方法
Pointcut(切入点):对于连接点进行确定的要被增强的方法就是切入点
Adivce(通知/增强):拦截到连接点后要进行的操作就被称为通知/增强
Aspect(切面):切入点和通知结合后就是切面
Weaving(织入):指把增强应用到目标对象来创建新的对象的过程

AOP开发需要明确的事项

需要编写的代码

编写核心业务代码(目标类的目标方法)
编写切面类,切面类中有通知
在配置文件中使切面类与目标类创建的Bean对象产生织入的关系

AOP会使用那种代理方式

AOP底层会根据创建的目标对象是否有接口而判断是使用JDK方式还是Cglib方式

AOP要点

AOP底层实现:基于JDK的动态代理 和 基于Cglib的动态代理
AOP重点概念:
Pointcut(切入点):被增强的方法
Advice(通知/增强):封装增强的业务逻辑的方法
Aspect(切面):切点加通知
Weaving(织入):切点与通知结合的过程
开发明确事项:
谁是切点:目标对象的需要增强的方法
谁是通知:切面类中的增强的方法
将切点和通知织入

XML方式配置AOP详解

切点表达式的写法

excution([修饰符] 返回值 包名.类名.方法名(形式参数))
1.修饰符可省略
2.返回值类型和包名、类名和方法名都可以用*替代,表示任意的意思
3.包名1和包名2之间用…连接表示的是包名2下的所有类及其子包下的所有类都被选中
4.参数列表可以用…表示任意类型的参数

通知的类型

通知的配置语法
<aop:通知类型 method=“切面中的方法名(通知)” pointcut=“切点表达式” />

名称标签说明
前置通知aop:before指定增强的方法会在目标对象的切入点方法之前执行
后置通知aop:returning指定增强的方法会在目标对象的切入点方法之后执行,当切入点方法抛出异常的时候不会执行
环绕通知aop:around指定增强的方法会在目标对象的切入点方法前后都可以执行
异常抛出通知aop:throwing指定增强的方法会在目标对象的切入点方法抛出异常的时候执行
最终通知aop:after指定增强的方法会在目标对象的切入点运行之后,不论是否报错都会执行

切点表达式的抽取

< aop: pointcut id=“myPonitcut” expression=“execution(* com.itheima.aop.* .(…))”>
< aop:before method=“test” pointcut-ref=“myPointcut” >

AOP织入的配置

< aop:config>
< aop:aspect ref=“切面类”>
< aop:before method=“切面类的增强方法(通知)” pointcut=“切点表达式”/>
< /aop:aspect>
< /aop:config >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值