spring的AOP学习2——动态代理
2012-04-09 13:14
302 查看
Spring的动态代理有两种:JDK动态代理和CGLIB代理。spring优先使用JDK动态代理。
JDK动态代理:使用java.lang.reflect.Proxy动态代理实现,即提取目标对象的接口,然后对接口创建AOP代理。
CGLIB代理:CGLIB代理不仅能进行接口代理,也能进行类代理,在使用CGLIB代理时,需要注意以下几点:
1.不能通知final方法,因为final方法不能被覆盖(CGLIB通过生成子类来创建代理)
2. 会产生两次构造器调用,第一次是目标类的构造器调用,第二次是CGLIB生成的代理类的构造器调用。如果需要CGLIB代理方法,请确保两次构造器调用不影响应用。
对于Schema风格配置切面使用如下方式来指定使用CGLIB代理:
使用@AspectJ风格:
JDK动态代理:使用java.lang.reflect.Proxy动态代理实现,即提取目标对象的接口,然后对接口创建AOP代理。
CGLIB代理:CGLIB代理不仅能进行接口代理,也能进行类代理,在使用CGLIB代理时,需要注意以下几点:
1.不能通知final方法,因为final方法不能被覆盖(CGLIB通过生成子类来创建代理)
2. 会产生两次构造器调用,第一次是目标类的构造器调用,第二次是CGLIB生成的代理类的构造器调用。如果需要CGLIB代理方法,请确保两次构造器调用不影响应用。
对于Schema风格配置切面使用如下方式来指定使用CGLIB代理:
<aop:config proxy-target-class="true"> <!-- other beans defined here... --> </aop:config>
使用@AspectJ风格:
<aop:aspectj-autoproxy proxy-target-class="true"/>
相关文章推荐
- [原创]java WEB学习笔记104:Spring学习---AOP 前奏,通过一个问题引入动态代理
- spring学习笔记(7)AOP前夕[2]CGLib动态代理实例解析
- Spring4学习笔记-AOP前传之动态代理
- Spring学习笔记之aop动态代理(3)
- Spring学习笔记之aop动态代理(3)
- spring aop学习7:Cglib动态代理(基于继承代理)
- spring aop学习8:spring对jdk和cglib动态代理的选择
- Java动态代理学习【Spring AOP基础之一】
- [Spring学习笔记 4 ] AOP 概念原理以及java动态代理
- Spring4学习笔记-AOP前传之动态代理
- Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC
- Spring AOP 学习之java JDK动态代理
- CgLib动态代理学习【Spring AOP基础之一】
- Spring学习(1)AOP初步—JDK动态代理
- Spring AOP 学习之cJlib动态代理
- Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC
- Spring 4 学习笔记4:Java动态代理(Spring AOP原理)
- 【Java EE 学习 51】【Spring学习第三天】【cglib动态代理】【AOP和动态代理】【切入点表达式】
- Spring学习-- AOP入门动态代理
- SSH与SSM学习之Spring14——动态代理之自己的AOP框架