从Spring的AOP框架介绍中得知
1. 对于使用接口的类,Spring使用JDK动态代理(原来做项目中试图从Bean强制转换为实现类,结果报错,原来是这么回事)。
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
2. 没有接口的就使用别的AOP框架aspectj.
但这些都是依赖于Java字节码工具ASM生成一个原类的新类,调用Callback
3. CGlib动态代理例子
/**
*CGlib采用非常底层的字节码技术,可以为一个类创建子类,
并在子类中采用方法拦截技术拦截父类方法的调用,并顺势进行增强,即是织入横切逻辑
* @author tufu
*/
public class CglibProxy implements MethodInterceptor{
private Enhancer enhancer = new Enhancer();
//覆盖MethodInterceptor接口的getProxy()方法,设置
public Object getProxy(Class clazz){
enhancer.setSuperclass(clazz); //设者要创建子类的类
enhancer.setCallback(this); //设置回调的对象
return enhancer.create(); //通过字节码技术动态创建子类实例,
}
public Object intercept(Object obj,Method method,Object[] args,
MethodProxy proxy) throws Throwable {
System.out.println("模拟代理增强方法");
//通过代理类实例调用父类的方法,即是目标业务类方法的调用
Object result = proxy.invokeSuper(obj, args);
System.out.println("模拟代理增强方法结束");
return result;
}
}
分享到:
相关推荐
展示了java aop原理 展示了java aop原理
spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图
spring中动态代理机制的实现原理及AOP实现原理,JDK的反射,cglib类。
aop原理使用demo
代理模式与动态代理--Spring AOP原理.doc
为了说明Spring的AOP原理,本人使用代理模式中的动态代理完成演示AOP编程的原理的演示。相信,如果你耐心看完整个程序(几乎一行注释一行代码),那么你对Spring这个东西就不是觉得有什么神秘了! 阅读对象:凡是喜爱...
Spring 框架之 AOP 原理剖析.html 抓下来打包成了HTML文件, 方便离线观看
SpringAOP原理及拦截器.pdf
SpringAOP原理及拦截器.docx
SpringAOP原理及拦截器.doc
NULL 博文链接:https://zhang-yingjie-qq-com.iteye.com/blog/319927
Spring注解驱动开发第33讲——AOP原理总结
AOP的意思就是面向切面编程。本文主要是通过梳理JDK中自带的反射机制,实现 AOP动态代理模式,这也是Spring AOP 的实现原理
Java核心知识体系4:AOP原理和切面应用
浅尝Spring注解开发_AOP原理及完整过程分析(源码).doc
Spring AOP面向方面编程原理:AOP概念,主要介绍面向对象的概念及原理,及作者的一些理解。
AOP原理1
介绍Spring AOP的原理,还有例子
NULL 博文链接:https://jadeluo.iteye.com/blog/1940019
Spring AOP 学习记录 AOP(面向切面编程)方面的知识又是看了忘忘了看,今天有空记录下AOP的知识点。主要分为以下几方面: 1、AOP相关术语 2、基础知识及示例 3、增强分类 1、AOP相关术语 连接点...