查看hutool aop模块源码时发现hutool实现了cglib的一个aop工厂,但是在没有依赖cglib的情况下,为什么可以完成正常的打包和项目运行。我在模拟直接生成一个没有对应import的类在main类旁边时,却无法完成编译。
hutool的源码如下:
```java
package cn.hutool.aop.proxy;
import cn.hutool.aop.aspects.Aspect;
import cn.hutool.aop.interceptor.CglibInterceptor;
import net.sf.cglib.proxy.Enhancer;
/**
* 基于Cglib的切面代理工厂
*
* @author looly
*
*/
public class CglibProxyFactory extends ProxyFactory{
private static final long serialVersionUID = 1L;
@Override
@SuppressWarnings("unchecked")
public <T> T proxy(T target, Aspect aspect) {
final Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(target.getClass());
enhancer.setCallback(new CglibInterceptor(target, aspect));
return (T) enhancer.create();
}
}
maven dependency 的 scope 设置成 provided 就好了
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!