GlobalServiceInterceptor会导致整体项目启动很慢

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


评论区

热门反馈

扫码入社