whoami9426
V2EX  ›  Java

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

  •  
  •   whoami9426 · Mar 14, 2024 · 4492 views
  •   You need to sign in to view this topic
    This topic created in 868 days ago, the information mentioned may be changed or developed.

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

    这个插件有什么用?

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

    为什么要用 BeanUtils?

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

    Idea 插件市场 直接搜索 BeanUtilsHelper

    插件地址

    插件演示

    https://imgur.com/DNX5b3N

    Supplement 1  ·  Mar 14, 2024

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

    Supplement 2  ·  Mar 18, 2024

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

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

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

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

    另外借宝地推销一下 Make Java Great Again!
    https://www.mjga.cc
    SilenceLL
        2
    SilenceLL  
       Mar 14, 2024
    不支持新版吗
    yxisenx
        3
    yxisenx  
       Mar 14, 2024
    添加的注释,没排除掉 ignoreProperties
    Aresxue
        4
    Aresxue  
       Mar 14, 2024   ❤️ 1
    我一直有个想法没空去实现,对这种使用 copyProperties 方法的两个对象,解析其 class
    1.比对两个 class 的字段,然后将差异列出来,比如 target 有但是 source 没有的字段,还有同名字段但是类型不一样的字段(此类情况最好直接能调用 idea 的告警将类型不一样的字段告警出来);
    2.在点击 target 的 setxxx 方法时能把使用 copyProperties 方法的地方作为其引用。
    楼主要是能把这两个功能实现一下这个插件的价值会更大些。
    Pantheoon
        5
    Pantheoon  
       Mar 14, 2024
    赞一个
    whoami9426
        6
    whoami9426  
    OP
       Mar 14, 2024
    @yxisenx 添加了对 ignoreProperties 的支持,下个版本发布
    whoami9426
        7
    whoami9426  
    OP
       Mar 14, 2024
    @Aresxue 好想法,加到 todo 了,后续版本更新上
    whoami9426
        8
    whoami9426  
    OP
       Mar 14, 2024
    @SilenceLL 应该是支持的,你也可以直接下载插件用离线安装的方式安装
    wolfie
        9
    wolfie  
       Mar 14, 2024
    `注释`是固定的,未来实体加属性会有问题。
    whoami9426
        10
    whoami9426  
    OP
       Mar 14, 2024
    @wolfie 是的,再重新生成就行了,这个插件也只是让你快速 peek 看一下
    wolfie
        11
    wolfie  
       Mar 14, 2024
    @whoami9426
    IDEA 有个插件叫 private-notes ,你可以考虑下是否可以搭配用。
    zhady009
        12
    zhady009  
       Mar 17, 2024
    不如用 Jackson 还带类型转换(如果可以的话)
    whoami9426
        13
    whoami9426  
    OP
       Mar 18, 2024
    @Aresxue 1.0.4 版本更新了 差异预览 静态检查 生成 SetterGetter 等功能,我想应该可以满足你提到的 1.2 两点了
    harrisonkang
        14
    harrisonkang  
       Mar 18, 2024
    刚刚安装的插件,但是却是 1.0.3 版本,是还没发布么?
    whoami9426
        15
    whoami9426  
    OP
       Mar 18, 2024
    @harrisonkang 1.0.4 版本还在审核中,预计要 2 天时间
    Aresxue
        16
    Aresxue  
       Mar 19, 2024
    @whoami9426 very good
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1145 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 23:23 · PVG 07:23 · LAX 16:23 · JFK 19:23
    ♥ Do have faith in what you're doing.