Spring 中的 ProxyFactory 创建代理对象
一、jdk 动态代理 和 cglib动态代理 简单介绍
1.jdk动态代理
public interface AService {public String serviceA(String param);public String serviceAA(String param);
}
public interface BService {public String serviceB(String param);public String serviceBB(String param);
}
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;public class JdkCustomInvocationHandler implements InvocationHandler {@Overridepublic Object invoke(Object o, Method method, Object[] objects) throws Throwable {if(method.equals(AService.class.getMethod("serviceA" , String.class))){// 在这里可以写 当我们把代理当作 AService 的实现子类,调用 serviceA 方法时// 我们要执行的代码,这里我们姑且就简单打印,并返回一个值System.out.println("JdkCustomInvocationHandler 开始处理 com.fll.start.dynamic_proxy.jdk.AService.serviceA 方法");return "JdkCustomInvocationHandler 处理 com.fll.start.dynamic_proxy.jdk.BService.serviceA 的结果";}else if(method.equals(BService.class.getMethod("serviceB", String.class))){// 在这里可以写 当我们把代理当作 BService 的实现子类,调用 serviceB 方法时// 我们要执行的代码,这里我们姑且就简单打印,并返回一个值System.out.println("JdkCustomInvocationHandler 开始处理 com.fll.start.dynamic_proxy.jdk.BService.serviceB 方法");return "JdkCustomInvocationHandler 处理 com.fll.start.dynamic_proxy.jdk.BService.serviceB 的结果";}else {return "暂时对该方法没有处理逻辑";}}
}
2.cglib动态代理
二、Spring中的 三个重要的概念 Advice Advisor Advised
1.Advice
2.Advisor
3.Advised
三、ProxyFactory 类的继承结构,以及每一层中实现的功能
四、AopProxyFactory的默认实现类DefaultAopProxyFactory的介绍
五、Spring 中的 InvocationHandler --- JdkDynamicAopProxy
六、AdvisedSupport 中 getInterceptorsAndDynamicInterceptionAdvice 详解
七、AdvisorChainFactory 的默认实现类 DefaultAdvisorChainFactory
八、AdvisorAdapterRegistry 的 默认实现类 DefaultAdvisorAdapterRegistry
九、简单介绍 Interceptor
十、详细介绍 MethodInterceptor
十一、如何通过 MethodInterceptor 几个实现类实现 Advice 的顺序调用
AdvisorChainFactory 的默认实现类 DefaultAdvisorChainFactory