`
skmbw
  • 浏览: 4404 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

BeanCopierFactory

 
阅读更多
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import org.apache.commons.lang.StringUtils;

import com.esotericsoftware.reflectasm.MethodAccess;

import net.sf.cglib.beans.BeanCopier;

public class BeanCopierFactory
{
    private static ConcurrentMap<String, BeanCopier> copierMap = new ConcurrentHashMap<String, BeanCopier>();
    private static ConcurrentMap<Class<? extends Object>, MethodAccess> methodAccessMap = new ConcurrentHashMap<Class<? extends Object>, MethodAccess>();
    private static final BeanCopierFactory instance = new BeanCopierFactory();
   
    private BeanCopierFactory() {
        createBeanCopier("SourceBeanToTargetBean", SourceBean.class, TargetBean.class);
    }
   
    public static BeanCopierFactory getInstance() {
        return instance;
    }
   
    public BeanCopier createBeanCopier(String key, Class<?> sourceClass, Class<?> targetClass) {
        StringBuilder sb = new StringBuilder();
        sb = sb.append(sourceClass.getSimpleName()).append("To").append(targetClass.getSimpleName());
        final String key1 = sb.toString();
        BeanCopier beanCopier = copierMap.get(key1);
        if (beanCopier == null) {
            beanCopier = BeanCopier.create(sourceClass, targetClass, false);
            copierMap.put(key1, beanCopier);
        }
        return beanCopier;
    }
   
    public void beanToMap(Object fromBean, Map<String, Object> toMap)
    {
        MethodAccess methodAccess = methodAccessMap.get(fromBean.getClass());
        if (methodAccess == null){
            methodAccess = MethodAccess.get(fromBean.getClass());
            methodAccessMap.put(fromBean.getClass(), methodAccess);
        }
        try
        {
            String[] methodNames = methodAccess.getMethodNames();
            for (String methodName : methodNames){
                if (methodName.startsWith("get")){
                   
                    Object value = methodAccess.invoke(fromBean, methodName, (Object[])null);
                    toMap.put(StringUtils.uncapitalize(methodName.substring(3)), value);
                }
            }
        }
        catch (Exception e)
        {
          
        }
    }
   
    public void mapToBean(Object toBean, Map<String, Object> fromMap)
    {
        MethodAccess methodAccess = methodAccessMap.get(toBean.getClass());
        if (methodAccess == null){
            methodAccess = MethodAccess.get(toBean.getClass());
            methodAccessMap.put(toBean.getClass(), methodAccess);
        }
        try
        {
            for (Map.Entry<String, Object> entry : fromMap.entrySet()){
                StringBuilder methodName = new StringBuilder("set").append(StringUtils.capitalize(entry.getKey()));
                methodAccess.invoke(toBean, methodName.toString(), entry.getValue());
            }
        }
        catch (Exception e)
        {
          
        }
    }
}
分享到:
评论

相关推荐

    【水果识别】基于matlab GUI深度学习卷积神经网络CNN水果识别分类【含Matlab源码 4241期】.md

    CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 图像识别:表盘识别、车道线识别、车牌识别、答题卡识别、电器识别、跌倒检测、动物识别、发票识别、服装识别、汉字识别、红绿灯识别、火灾检测、疾病分类、交通标志牌识别、口罩识别、裂缝识别、目标跟踪、疲劳检测、身份证识别、人民币识别、数字字母识别、手势识别、树叶识别、水果分级、条形码识别、瑕疵检测、芯片识别、指纹识别

    CAXA电器件元件库详解与应用元件图 v0.5.7z

    《CAXA电器件元件库详解与应用》 在电子设计和机械工程领域,CAXA(Computer Aided eXecution for All)是一款广泛使用的CAD软件,它为用户提供了强大的二维绘图和三维建模功能。特别是对于电气控制系统的设计,CAXA的电器件元件库是一个非常实用的工具。本文将深入探讨CAXA2007版中的电器件元件库,以及如何利用这些元件库提高电气控制图的绘制效率。 一、CAXA电器件元件库概述 CAXA电器件元件库是CAXA软件专门为电气控制系统设计者提供的一个资源库,包含了各种常见的电气元件模型,如开关、继电器、按钮、接触器、PLC等。这些元件库的建立,旨在简化设计过程,使设计师能够快速地拖拽标准元件到图纸上,从而节省大量手动绘制图形的时间,提高设计精度和工作效率。 二、元件库内容 在“元件图 v0.5”这个压缩包中,我们可以找到CAXA电器件元件库的初步版本。这个库包含了不同类型的电气元件,例如: 1. 开关:包括单极开关、双极开关、转换开关等,这些开关模型都具备不同的操作方式和触点配置,能满足多种电路控制需求。 2. 继电器:包括电磁继电器、时间继电器

    钢板自动成型周转设备sw17可编辑_三维3D设计图纸.zip

    钢板自动成型周转设备sw17可编辑_三维3D设计图纸.zip

    SSM+JSP水果销售管理网站答辩PPT.pptx

    计算机毕业设计答辩PPT

    蓝桥杯竞赛练习题的题解(CC++Java)-努力成为萌萌的程序媛~.rar

    蓝桥杯竞赛练习题的题解(C/C++/Java)-努力成为萌萌的程序媛~

    Python实现了简单的项目打包、备份和其他操作,如创建和复制文件和目录.zip

    Python实现了简单的项目打包、备份和其他操作,如创建和复制文件和目录.zipPython实现了简单的项目打包、备份和其他操作,如创建和复制文件和目录.zipPython实现了简单的项目打包、备份和其他操作,如创建和复制文件和目录.zipPython实现了简单的项目打包、备份和其他操作,如创建和复制文件和目录.zipPython实现了简单的项目打包、备份和其他操作,如创建和复制文件和目录.zipPython实现了简单的项目打包、备份和其他操作,如创建和复制文件和目录.zip

    袋装灌装机step_三维3D设计图纸.zip

    袋装灌装机step_三维3D设计图纸.zip

    MATLAB实现GWO-SVM多输入单输出回归预测(灰狼算法优化支持向量机)(包含详细的完整的程序和数据)

    内容概要:本文提供了使用灰狼优化算法(GWO)和支持向量机(SVM)结合来进行多输入单输出回归预测的方法,并通过MATLAB平台展示了完整的代码示例与数据分析方法,适用于解决多种实际领域的预测问题。 适用人群:具有一定编程基础并对机器学习算法特别是回归预测感兴趣的研究人员及技术人员。 使用场景及目标:可用于金融市场趋势分析、气候变化预测等领域,以提高预测准确性并为相关决策提供数据依据。 其他说明:文中详细描述了数据预处理方法、GWO优化过程和基于最优参数的SVM构建,并附有实验数据处理与可视化结果,方便理解和复现。

    基于微信小程序的党员之家服务系统答辩PPT.ppt

    计算机毕业设计答辩PPT

    基于微信小程序的上门维修系统答辩PPT.pptx

    计算机毕业设计答辩PPT

    【手写数字识别】基于matlab GUI模板匹配手写数字识别【含Matlab源码 094期】.md

    【手写数字识别】基于matlab GUI模板匹配手写数字识别【含Matlab源码 094期】.md

    SSM+JSP大学生评优管理系统答辩PPT.pptx

    计算机毕业设计答辩PPT

    23页-智慧工地云平台建设方案.pdf

    智慧工地解决方案旨在通过信息化手段提高建筑行业的监管水平和施工企业的管理效率。该方案响应了国家“十二五”规划中提出的全面提高行业信息化水平的要求,通过建立统一的建筑施工安全生产监管信息平台,解决政府监管部门面临的监管难题,如环境复杂、人员复杂、施工地点分散等。同时,它也帮助建筑企业应对劳动力流动大、成本上升、劳务纠纷等问题,通过信息化手段提升施工质量和安全管理。 智慧工地的整体思路是通过信息化建设,为政府职能部门提供监管手段,为施工企业提供管理支撑。这包括视频监控、实名制考勤、人员定位和免费WIFI上网等模块。视频监控系统能够实时监控工地现场,确保施工进度和安全;实名制考勤系统则确保合法用工,提高劳务管理的效率;人员定位系统有助于追踪工地人员,增强安全管理;免费WIFI上网则为工人提供娱乐和信息获取的途径,提高生活质量。 该方案的实施,不仅降低了政府的监管成本,提高了监管效率,还帮助建筑企业实时了解施工现场的安全和污染情况,掌握施工进度,降低管理成本,提升施工质量。此外,外来务工人员也能享受到信息化带来的便利,如通过智能终端免费上网,享受健康娱乐方式。 智慧工地项目的优势在于其专业的团队和丰富的实施经验。项目团队整合了全方位的资源,打造了行业信息化解决方案,并提供了个性化的行业信息化应用定制。此外,项目还依托于专业的运营团队和丰富的运营经验,提供了通信类系统和IT系统维护等服务外包。 最后,智慧工地项目通过政府牵头、企业投资、资源共享的合作模式,实现了普惠于民的目标。例如,武清区建委智慧工地项目通过视频监控和手机考勤系统,规范了建筑市场秩序,为保证工程质量奠定了基础,同时有效降低了监管成本,提高了建筑工地突发事件的应急处置能力。这种合作模式不仅提升了建筑行业的整体效率,也为构建美丽城市和实现中国梦做出了贡献。

    MATLAB实现基于CNN-BiLSTM-KDE多变量时间序列区间预测(含完整的程序和代码详解)

    本文介绍并实现了基于MATLAB工具箱的卷积神经网络(CNN)、双向长短期记忆网络(BiLSTM)和核密度估计(KDE)相结合的方法来进行多变量时间序列区间预测。文中提供了详细的模型构建步骤、超参数调优方式以及完整的代码实现。该项目能有效捕捉复杂序列的时间依赖性及非线性特征,在预测过程中加入概率分布评估增加预测范围的有效性。 适用人群:具备MATLAB编程基础并关注于多变量时间序列预测的技术人员。 使用场景及目标:适用于电力负荷预测、天气预报等领域,特别适用于要求较高精确度和预测区间的应用。 注意事项:实践中需考虑足够的数据清洗和处理以避免过拟合,此外应确保系统配置能支持所需算力的计算任务。

    基于Java的SSM框架整合实践设计源码

    该项目为基于Java的SSM框架整合实践设计源码,包含24个文件,其中包括12个Java源文件、9个XML配置文件、2个Git忽略文件以及1个属性文件,涵盖了Spring、SpringMVC和MyBatis的集成代码实践。

    【尾灯识别】基于matlab亮度和颜色阈值夜间尾灯识别【含Matlab源码 4025期】.md

    CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 图像识别:表盘识别、车道线识别、车牌识别、答题卡识别、电器识别、跌倒检测、动物识别、发票识别、服装识别、汉字识别、红绿灯识别、火灾检测、疾病分类、交通标志牌识别、口罩识别、裂缝识别、目标跟踪、疲劳检测、身份证识别、人民币识别、数字字母识别、手势识别、树叶识别、水果分级、条形码识别、瑕疵检测、芯片识别、指纹识别

    【水果识别】基于matlab GUI苹果质量检测及分级系统【含Matlab源码 896期】.md

    CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 图像识别:表盘识别、车道线识别、车牌识别、答题卡识别、电器识别、跌倒检测、动物识别、发票识别、服装识别、汉字识别、红绿灯识别、火灾检测、疾病分类、交通标志牌识别、口罩识别、裂缝识别、目标跟踪、疲劳检测、身份证识别、人民币识别、数字字母识别、手势识别、树叶识别、水果分级、条形码识别、瑕疵检测、芯片识别、指纹识别

    C#读取松下PLC的运行状态源码.zip

    系统源码例子参考使用,压缩包里有配套辅助工具,

    5G和新基建赋能智慧工地整体解决方案PPT(116页).pptx

    智慧工地解决方案旨在通过信息化手段提高建筑行业的监管水平和施工企业的管理效率。该方案响应了国家“十二五”规划中提出的全面提高行业信息化水平的要求,通过建立统一的建筑施工安全生产监管信息平台,解决政府监管部门面临的监管难题,如环境复杂、人员复杂、施工地点分散等。同时,它也帮助建筑企业应对劳动力流动大、成本上升、劳务纠纷等问题,通过信息化手段提升施工质量和安全管理。 智慧工地的整体思路是通过信息化建设,为政府职能部门提供监管手段,为施工企业提供管理支撑。这包括视频监控、实名制考勤、人员定位和免费WIFI上网等模块。视频监控系统能够实时监控工地现场,确保施工进度和安全;实名制考勤系统则确保合法用工,提高劳务管理的效率;人员定位系统有助于追踪工地人员,增强安全管理;免费WIFI上网则为工人提供娱乐和信息获取的途径,提高生活质量。 该方案的实施,不仅降低了政府的监管成本,提高了监管效率,还帮助建筑企业实时了解施工现场的安全和污染情况,掌握施工进度,降低管理成本,提升施工质量。此外,外来务工人员也能享受到信息化带来的便利,如通过智能终端免费上网,享受健康娱乐方式。 智慧工地项目的优势在于其专业的团队和丰富的实施经验。项目团队整合了全方位的资源,打造了行业信息化解决方案,并提供了个性化的行业信息化应用定制。此外,项目还依托于专业的运营团队和丰富的运营经验,提供了通信类系统和IT系统维护等服务外包。 最后,智慧工地项目通过政府牵头、企业投资、资源共享的合作模式,实现了普惠于民的目标。例如,武清区建委智慧工地项目通过视频监控和手机考勤系统,规范了建筑市场秩序,为保证工程质量奠定了基础,同时有效降低了监管成本,提高了建筑工地突发事件的应急处置能力。这种合作模式不仅提升了建筑行业的整体效率,也为构建美丽城市和实现中国梦做出了贡献。

    水果采摘机器人sw22_三维3D设计图纸.zip

    水果采摘机器人sw22_三维3D设计图纸.zip

Global site tag (gtag.js) - Google Analytics