开发了一个关于 BeanUtils 的插件,为了让我少点两下鼠标 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whoami9426
V2EX    Java

开发了一个关于 BeanUtils 的插件,为了让我少点两下鼠标

  •  
  •   whoami9426 2024-03-14 09:30:01 +08:00 2538 次点击
    这是一个创建于 650 天前的主题,其中的信息可能已经有所发展或是发生改变。

    经常用到 BeanUtils 工具,但是没办法在编码的时候很方便的知道复制出了哪些属性 尤其是 review 别人代码时得分别看目标类型和源类型再比对一下共有的属性,于是我写了这个插件,也算偷点懒

    这个插件有什么用?

    • 只做一件事,为 BeanUtils.copyProperties 方法复制出的属性生成显式的注释

    为什么要用 BeanUtils?

    • 因为本人是个懒狗,的确有很多的方案做这件事,比如 Mapstruct,但是还是一行代码的方式更适合我这种懒狗
    • 同时我也希望别人用 BeanUtils.copyProperties 时也能知道发生了什么

    Idea 插件市场 直接搜索 BeanUtilsHelper

    插件地址

    插件演示

    https://imgur.com/DNX5b3N

    第 1 条附言    2024-03-14 14:17:57 +08:00

    感谢大家的建议和反馈,有好的想法或者问题可以在这个库 BeanUtilHelper 给我提issue, 也厚着脸跟大家求一个 star

    第 2 条附言    2024-03-18 09:36:29 +08:00

    吸收大家的建议和想法, BeanUtilHelper 1.0.4版本更新了以下功能

    • 一键生成 GetterSetter 代码,根据 BeanUtil.copyProperties 生成 GetterSetter 代码
    • 静态检查属性复制,提示属性名相同类型不一致的复制,提示没有相同属性的复制
    • 一键生成差异属性的注释,一键预览差异的属性,标识差异化属性,发现潜在问题

    一键生成 GetterSetter 代码 GetterSetter 差异预览 差异预览 静态检查 静态检查

    16 条回复    2024-03-19 09:42:25 +08:00
    chuck1in
        1
    chuck1in  
       2024-03-14 09:55:45 +08:00
    不错,这个插件还挺适合哪种超级懒人,这样相当于都不用点进去看了。

    另外借宝地推销一下 Make Java Great Again!
    https://www.mjga.cc
    SilenceLL
        2
    SilenceLL  
       2024-03-14 10:19:38 +08:00
    不支持新版吗
    yxisenx
        3
    yxisenx  
       2024-03-14 10:23:53 +08:00
    添加的注释,没排除掉 ignoreProperties
    Aresxue
        4
    Aresxue  
       2024-03-14 11:06:48 +08:00   1
    我一直有个想法没空去实现,对这种使用 copyProperties 方法的两个对象,解析其 class
    1.比对两个 class 的字段,然后将差异列出来,比如 target 有但是 source 没有的字段,还有同名字段但是类型不一样的字段(此类情况最好直接能调用 idea 的告警将类型不一样的字段告警出来);
    2.在点击 target 的 setxxx 方法时能把使用 copyProperties 方法的地方作为其引用。
    楼主要是能把这两个功能实现一下这个插件的价值会更大些。
    Pantheoon
        5
    Pantheoon  
       2024-03-14 11:29:00 +08:00
    赞一个
    whoami9426
        6
    whoami9426  
    OP
       2024-03-14 14:09:40 +08:00
    @yxisenx 添加了对 ignoreProperties 的支持,下个版本发布
    whoami9426
        7
    whoami9426  
    OP
       2024-03-14 14:11:12 +08:00
    @Aresxue 好想法,加到 todo 了,后续版本更新上
    whoami9426
        8
    whoami9426  
    OP
       2024-03-14 14:12:26 +08:00
    @SilenceLL 应该是支持的,你也可以直接下载插件用离线安装的方式安装
    wolfie
        9
    wolfie  
       2024-03-14 20:08:10 +08:00
    `注释`是固定的,未来实体加属性会有问题。
    whoami9426
        10
    whoami9426  
    OP
       2024-03-14 20:20:26 +08:00
    @wolfie 是的,再重新生成就行了,这个插件也只是让你快速 peek 看一下
    wolfie
        11
    wolfie  
       2024-03-14 20:32:34 +08:00
    @whoami9426
    IDEA 有个插件叫 private-notes ,你可以考虑下是否可以搭配用。
    zhady009
        12
    zhady009  
       2024-03-17 17:38:11 +08:00
    不如用 Jackson 还带类型转换(如果可以的话)
    whoami9426
        13
    whoami9426  
    OP
       2024-03-18 09:39:09 +08:00
    @Aresxue 1.0.4 版本更新了 差异预览 静态检查 生成 SetterGetter 等功能,我想应该可以满足你提到的 1.2 两点了
    harrisonkang
        14
    harrisonkang  
       2024-03-18 11:41:22 +08:00
    刚刚安装的插件,但是却是 1.0.3 版本,是还没发布么?
    whoami9426
        15
    whoami9426  
    OP
       2024-03-18 11:57:15 +08:00
    @harrisonkang 1.0.4 版本还在审核中,预计要 2 天时间
    Aresxue
        16
    Aresxue  
       2024-03-19 09:42:25 +08:00
    @whoami9426 very good
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3208 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 10:55 PVG 18:55 LAX 02:55 JFK 05:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86