BeanCopier工具类_BeanUtils

BeanCopier工具类_BeanUtilscglib的BeanCopier功能很强大,不过频繁的create太占用资源,降低服务器性能,所以写了下面的代码进行优化。以达到提升性能的目的。主要就是用缓存将类型相同的copier缓存起来,后续copy的时候就不用再继续创建了。这样的话如果有频繁用到BeanCopier的地方,将是很有用处滴。importorg.springframework.cglib.beans.BeanCopi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

cglib的BeanCopier功能很强大,不过频繁的create太占用资源,降低服务器性能,所以写了下面的代码进行优化。以达到提升性能的目的。主要就是用缓存将类型相同的copier缓存起来,后续copy的时候就不用再继续创建了。

这样的话如果有频繁用到BeanCopier的地方,将是很有用处滴。

import org.springframework.cglib.beans.BeanCopier;

import java.util.concurrent.ConcurrentHashMap;

/**
 * BeanCopier工具类
 * @author 李锋镝
 */
public class BeanCopierUtil {
    /**
     * BeanCopier的缓存
     */
    static final ConcurrentHashMap<String, BeanCopier> BEAN_COPIER_CACHE = new ConcurrentHashMap<>();

    /**
     * BeanCopier的copy
     * @param source 源文件的
     * @param target 目标文件
     */
    public static void copy(Object source, Object target) {
        String key = genKey(source.getClass(), target.getClass());
        BeanCopier beanCopier;
        if (BEAN_COPIER_CACHE.containsKey(key)) {
            beanCopier = BEAN_COPIER_CACHE.get(key);
        } else {
            beanCopier = BeanCopier.create(source.getClass(), target.getClass(), false);
            BEAN_COPIER_CACHE.put(key, beanCopier);
        }
        beanCopier.copy(source, target, null);
    }

    /**
     * 生成key
     * @param srcClazz 源文件的class
     * @param tgtClazz 目标文件的class
     * @return string
     */
    private static String genKey(Class<?> srcClazz, Class<?> tgtClazz) {
        return srcClazz.getName() + tgtClazz.getName();
    }
}

除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/archives/article/500

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197002.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c++读取json文件_cfile读写文件

    c++读取json文件_cfile读写文件说明:本篇文章主要参考了如下博主的内容,地址附上:一、JSON文件简介1、什么是JSON文件? JSON文件是一种文本文件,一种配置文件,它具有严格的编写规则,这样可以是使用者更好的阅读和使用该类型文件。它的编写规则如下:JSON文件使用花括号括起来,代表一段数据,这段数据里面可以有多个字段。每个字段的结构有点类似于Map容器,一个key对应一个value。字段名必须用双引号包围,而字段的值可以是多种类型,例如浮点型、整形、字符串类型,甚至可以是一个新的数据段,就数据的嵌套。2、JSON文

  • python pandas读取csv文件_pandas将数据写入csv

    python pandas读取csv文件_pandas将数据写入csv1、首先设置pycharm三个地方改为UTF-82data=pd.read_csv(PATH+FILE_NAME,encoding=”gbk”,header=0,index_col=0)直接读入就可以了

  • can总线板卡_CAN接口

    can总线板卡_CAN接口现有市场下,智能化程度越来越高,特别是AGV、机器人、物流车、动力电池检测等等行业中工控机应用越来越频繁。然而这些产品核心控制器与电池都是走的CAN总线通讯,而工控机本身是没有CAN通讯,那么工控机就需要通讯桥梁(025-68250795)来扩展CAN通道。而在工控机当中有nimipcie接口,如此就用可以用minipcie接口转CAN的一个模块来实现扩充CAN口。miniPCIe接口CAN卡是PCIExpressmini卡槽的工控机或单板电脑快速扩展CAN通道的利器。产品特性PCIExpr

  • 用.NET开发的磁力搜索引擎——btbook.net「建议收藏」

    用.NET开发的磁力搜索引擎——btbook.net「建议收藏」去年10月份开始研究相关的协议与资料,中途乱七八糟的事情差点没坚持下来,寒假期间修修补补,上礼拜把Btbook发布了,经过社交网络发布之后,发生了裂变式的分享,上线第三天UV就达到了两万多,也算是对这

  • 哈哈,你造原来程序猿这么多长处嘛

    哈哈,你造原来程序猿这么多长处嘛

  • loadrunner11 post请求接口压力测试并生成报告「建议收藏」

    loadrunner11 post请求接口压力测试并生成报告「建议收藏」以管理员身份运行loadRunner,进行脚本编写新建脚本选择http请求默认弹出窗口直接关闭就可以选泽scriot-点击action-输入执行脚本Action(){web_custom_request(“222″,”URL=http://10.129.2.121:8082/api/vehicle_license/base64_image”,”Method=POST”,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号