AOP技术实现的内容:让Spring框架监控切入点方法的执行,一旦监控到切入点方法被运行,就使用代理机制,动态创建目标对象的代理对象,再根据绑定的通知类型,去完成对应的增强方法。
目录
5,在applicationContext.xml中配置织入关系
1,将目标类和切面类的对象创建权交给spring用注解的方式
3,在applicationContext.xml中配置组件扫描和AOP的自动代理
一,基于XML的AOP开发
1,导入AOP相关坐标
除了导入spring框架的坐标还要导入aspectjweaver这个坐标

2,创建目标接口和目标类(内部有切点)

切点就是save()方法
3,创建切面类(内部有增强方法)

4,将目标类和切面类的对象创建权交给spring

5,在applicationContext.xml中配置织入关系
(1)引入aop命名空间

(2)配置织入就是告诉那些方法(切点)需要那些增强(前置或后置等)

<aop:aspect ref="myAspect" >:声明自定义的myAspect类是切面类
<aop:before method="before" pointcut="execution(public void com.itheima.aop.Target.save( ))"/>:对全包名下的Target类的sava()方法进行监控,如果启功就使用代理机制,动态创建目标对象的代理对象,再根据绑定的通知类型,这里绑定的类型是前置,对应的增强方法是myAspect类下的before方法。
6,测试
(1)创建测试类
使用spring集成的junit测试Target中的save()方法

这里注入Tartget对象需要用接口去接,因为用的jdk动态代理
(2)运行

(3)切点表达式

返回值类型,包名,类名,方法名可以使用星号*代表任意。
包名与类名之间一个点.代表当前包下的类,两个点..表示当前包及其子包下的类
参数列表可以使用两个点..表示任意个数,任意类型的参数列表
例如:
execution(public void com.itheima.aop.Target.method())
这个com.itheima.aop包下的这个Target类下的这个method()方法,无返回值,无参
execution(public void com.itheima.aop.Target.*(..))
这个com.itheima.aop包下的这个Target类下的任意方法,无返回值,任意参数
execution(* com.itheima.aop.*.*(..)) 常用
这个com.itheima.aop包下的任意类下的任意方法,任意返回值,任意参数
execution(* com.itheima.aop..*.*(..))
这个com.itheima.aop包下及其子包下的的任意类下的任意方法,任意返回值,任意参数
(4)通知的类型

配置


(5)切点表达式的抽取

二,基于注解的AOP开发
1,将目标类和切面类的对象创建权交给spring用注解的方式

目标类的注解

切面类的注解和标注当前类是一个切面类的注解
2,在切面类中使用注解配置织入关系

3,在applicationContext.xml中配置组件扫描和AOP的自动代理

4,切点表达式的抽取

配置一个方法加上@Pointcut注解,里面写切点表达式
调用方式有两种
(1)注解里写方法名()的字符串

(2)注解里写切面类名.方法名()的字符串

本文详细介绍了如何在Spring框架中通过XML和注解实现AOP,包括创建目标接口、目标类、切面类,配置织入关系,使用前置通知,并展示了基于XML和注解的切点表达式和通知类型配置。
2052

被折叠的 条评论
为什么被折叠?



