在项目中添加发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();