架构探险之Spring笔记

public interface hello{
 void say();
}

public class HelloImp implements hello{



public void say(){
.....
}

public void sayTo(){


............


}



直接使用jdk的动态代理,每次调用方法都会 进入 InvocationHandler的 invoke方法,如果在invoke中不做特殊处理
所有的方法都会被置入增强(如 before()或者after()方法),如果需要对特定的方法增强需要我们在invoke中作出
判断符合则执行,不合和则跳过

spring 框架为了简化引入了Advisor(切面)类代表着要增强的某个方法  这也是AOP中的核心


即通过切面,将增强类,与拦截匹配条件(Pointcut)组合到一起,然后将这个切面配置到
ProxyFactory中,从而生成代理。

Advisor(切面) 封装了增强Advice与Pointcut


书中实现AOP要点总结

在这里代理一个类由其继承 AspectProxy 覆盖他的方法 
(@Aspect必须注解在AspectProxy型的类上才起作用)
由@Aspect来和AspectProxy型类(子类继承覆盖before ,after等方法)共同作用来实现
AOP功能 首先@Aspect注解的内容表明切点为那种类,使用这样方式可以获取到
类与 AspectProxy型类的关系(一个AspectProxy对应哪种类(多个同种类集合)),
经遍历 也可以确定一个类 会经过哪几个AspectProxy 代理,最终执行代理链方法
获得最终所需的类

猜你喜欢

转载自blog.csdn.net/qq_32459653/article/details/81047222