【发布时间】:2016-10-31 13:08:48
【问题描述】:
什么是 CGLIB,它与 Spring 有什么关系?使用 Spring Framework 时是否必须明确定义 CGLIB 的用法?
【问题讨论】:
标签: spring code-generation cglib
什么是 CGLIB,它与 Spring 有什么关系?使用 Spring Framework 时是否必须明确定义 CGLIB 的用法?
【问题讨论】:
标签: spring code-generation cglib
参考弹簧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。
【讨论】: