- 原始对象额外功能切⼊点组装切面
@Aspect public class MyAspect { @Around("execution(* login(..))") public Object arround(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("- ---aspect log ------"); Object ret = joinPoint.proceed(); return ret; } } 上述9-12行和之前的实现MethodInterceptor接口类似,如下代码所示 配置文件:2.细节 1.切入点复用//告知Spring基于注解进⾏AOP编程
切⼊点复⽤:在切⾯类中定义⼀个方法,方法上⾯@Pointcut注解 通过这种⽅式,定义切⼊点表达式,后续更加有利于切⼊点复⽤。 @Aspect //切面类 public class MyAspect { @Pointcut("execution(* login(..))") public void myPointcut(){} // 添加切入点复用方法后,将@Around("execution(* login(..))")改为 @Around(value = "myPointcut()") @Around(value = "myPointcut()") public Object arround(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("- ---aspect log ------"); Object ret = joinPoint.proceed(); return ret; } }2.动态代理的创建方式
AOP底层实现 2种代理创建⽅式 1. JDK 通过实现接⼝ 做新的实现类⽅式 创建代理对象 2. Cglib通过继承⽗类 做新的⼦类创建代理对象 默认情况 AOP编程 底层应⽤JDK动态代理创建⽅式 如果切换Cglib呢? 1. 注解AOP开发 //告知Spring基于注解进⾏AOP编程 将 改成 2. 传统的AOP开发切换Cglib # 组装 改成 在aop:config标签中添加属性proxy-target-class="true" 如下:
本系列文章从Spring5原理开始深入浅出,从工厂特性=>依赖注入–IOC=>AOP编程=>Spring事务=>纯注解开发。本文来自观看B站孙帅Spring教程后做的笔记。持续更新…
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)