美文网首页
对象属性拷贝效率优化

对象属性拷贝效率优化

作者: ivms8200 | 来源:发表于2020-05-27 15:34 被阅读0次

    参考你还在用BeanUtils进行对象属性拷贝?

    import org.springframework.cglib.beans.BeanCopier;
    import java.util.Map;
    import java.util.concurrent.ConcurrentHashMap;
    
    /**
     * 封装属性拷贝工具类
     */
    public class BeanCopierUtil {
        private static final Map<String, BeanCopier> BEAN_COPIER_CACHE_MAP = new ConcurrentHashMap<>();
    
        public static void copy(Object source, Object target) {
            BeanCopier copier = getBeanCopier(source.getClass(), target.getClass());
            copier.copy(source, target, null);
        }
    
        private static BeanCopier getBeanCopier(Class sourceClass, Class targetClass) {
            String cacheKey = generateKey(sourceClass, targetClass);
            BeanCopier copier;
            if (!BEAN_COPIER_CACHE_MAP.containsKey(cacheKey)) {
                copier = BeanCopier.create(sourceClass, targetClass, false);
                BEAN_COPIER_CACHE_MAP.put(cacheKey, copier);
            } else {
                copier = BEAN_COPIER_CACHE_MAP.get(cacheKey);
            }
            return copier;
        }
    
        private static String generateKey(Class<?> class1, Class<?> class2) {
            return class1.toString() +"_"+ class2.toString();
        }
    
    }
    

    相关文章

      网友评论

          本文标题:对象属性拷贝效率优化

          本文链接:https://www.haomeiwen.com/subject/sbiwahtx.html