在项目中添加发GlobalServiceInterceptor会导致整体项目启动很慢,原因是会使用模板生成代理类,然后再去调用编译器去编译生成的代理类,如果项目中service很多,这个过程会很漫长,这个怎么解决呢?每次项目启动要好久,这在开发阶段太难了
synchronized (target) {
Class<T> ret = (Class<T>)cache.get(target);
if (ret != null) {
return ret;
}
ProxyClass proxyClass = proxyGenerator.generate(target);
if (proxyClass.needProxy()) {
proxyCompiler.compile(proxyClass);
ret = (Class<T>)proxyClassLoader.loadProxyClass(proxyClass);
proxyClass.setClazz(ret);
cacheMethodProxy(proxyClass); // 放在 loadClass 动作之后
cache.put(target, ret);
return ret;
} else {
cache.put(target, target); // 无需代理的情况映射原参数 target
return target;
}
}一般启动一次要20~30多秒
最后没办法,引入cglib.jar, 换成cglib代理
// 使用cglib使用动态代理 me.setToCglibProxyFactory();