BeanCopier系列之三:缓存BeanCopier提升性能

BeanCopier系列之一:特性测试
BeanCopier系列之二:使用Converter


BeanCopier拷贝速度快,性能瓶颈出现在创建BeanCopier实例的过程中。

所以,把创建过的BeanCopier实例放到缓存中,下次可以直接获取,提升性能:

public class CachedBeanCopier {

	static final Map<String, BeanCopier> BEAN_COPIERS = new HashMap<String, BeanCopier>();

	public static void copy(Object srcObj, Object destObj) {
		String key = genKey(srcObj.getClass(), destObj.getClass());
		BeanCopier copier = null;
		if (!BEAN_COPIERS.containsKey(key)) {
			copier = BeanCopier.create(srcObj.getClass(), destObj.getClass(), false);
			BEAN_COPIERS.put(key, copier);
		} else {
			copier = BEAN_COPIERS.get(key);
		}
		copier.copy(srcObj, destObj, null);
	}

	private static String genKey(Class<?> srcClazz, Class<?> destClazz) {
		return srcClazz.getName() + destClazz.getName();
	}
}

你可能感兴趣的:(java,bean,cglib,copier)