Aop jdk cglib
时间: 2023-10-25 15:11:20 浏览: 93
AOP(Aspect Oriented Programming)是一种编程思想,它通过将横切关注点(如日志、事务、安全等)从业务逻辑中分离出来,以模块化的方式进行开发和维护。JDK动态代理和CGLIB动态代理都可以用来实现AOP。
JDK动态代理是通过反射机制来实现的,它只能代理实现了接口的类,而不能代理没有实现接口的类。CGLIB动态代理则是通过继承目标类来实现的,它可以代理没有实现接口的类。
相关问题
springaop jdk动态代理
Spring AOP使用JDK动态代理和CGLIB代理来实现切面编程。JDK动态代理是基于接口的代理,它只能代理实现了接口的类,而CGLIB代理则可以代理没有实现接口的类。
在Spring AOP中,如果目标对象实现了至少一个接口,则使用JDK动态代理。如果目标对象没有实现任何接口,则使用CGLIB代理。
JDK动态代理是通过反射机制来实现的,它可以在运行时动态地创建代理类和代理对象。当调用代理对象的方法时,实际上是调用了InvocationHandler接口的invoke()方法,该方法会根据方法名和参数列表来调用目标对象的方法。
jdk和cglib的区别
JDK和CGLIB都是Java中的类库,但是它们的作用和实现方式有所不同。
JDK是Java Development Kit的缩写,是Java的标准开发工具包,其中包含了Java编程所需的核心类库、Java编译器、Java虚拟机等。JDK中提供了一些基本的注解,如@Deprecated、@Override等,以及反射相关的类和方法,如Class、Method等。这些注解和反射相关的类和方法,可以用来实现一些简单的AOP(面向切面编程)功能。
CGLIB是Code Generation Library的缩写,是一个基于ASM的字节码生成库,可以动态生成Java类和代理对象。CGLIB可以通过继承和代理来实现AOP功能,相比JDK的动态代理,CGLIB支持更多的增强方法,且不需要目标对象实现接口,因此更加灵活。
总的来说,JDK和CGLIB都可以用来实现AOP功能,但是JDK的实现方式相对简单,适用于一些简单的场景,而CGLIB则更加灵活,适用于一些复杂的场景。
阅读全文