什么是CGLIB以及它与Spring的关系?在使用Spring Framework时,我们是否必须明确定义CGLIB的用法?
答案 0 :(得分:18)
Ref Spring docs。 什么是CGLIB&它与Spring有什么关系?
CGLIB是一个代码生成库。 Spring使用CGLIB来生成代理。
Spring AOP默认使用AOP代理的标准JDK动态代理。这使得任何接口(或接口集)都可以被代理。
是的,您必须告诉spring明确使用基于CGLIB的代理。
通过xml:
<aop:aspectj-autoproxy proxy-target-class="true"/>
proxy-target-class 属性设置为true将导致基于CGLIB的代理生效。
通过注释:
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass=true)
public class AppConfig {
// ...
}
无需将CGLIB添加到类路径中。从Spring 3.2开始,CGLIB被重新打包并包含在spring-core JAR中。
您也可以查看this。