跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 是否有 Java 类库可以对的 Java Bean 进行一些额外的处理逻辑
未分類
25 3 月 2020

是否有 Java 类库可以对的 Java Bean 进行一些额外的处理逻辑

是否有 Java 类库可以对的 Java Bean 进行一些额外的处理逻辑

資深大佬 : lihongjie0209 48

对于一些第三方的数据总是要进行一些处理然后才能进入业务逻辑

Class PoJo {     @Trim  private String name;   @Default(value= new Date())      private Date date;   } 

对于 Trim 来说, 如果第三方传过来的 name = "hello " , 那么经过处理之后 name="hello" .

大佬有話說 (28)

  • 資深大佬 : guyeu

    没有。感觉这种东西不但没办法解决问题,还会造成问题。。

  • 主 資深大佬 : lihongjie0209

    @guyeu #1 有什么问题?

  • 資深大佬 : xbigfat

    我觉得可以自己实现这个注解

  • 資深大佬 : joichuai

    mark 下等大佬回复,自己平时遇到的顶多是下划线驼峰互相转,复杂业务都自己代码里转换了。

  • 資深大佬 : sonyxperia

    https://chenzhihao.cc/2019/06/13/Springmvc%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E7%9A%84%E4%BC%98%E9%9B%85%E5%A4%84%E6%96%B9%E5%BC%8F/

  • 資深大佬 : xiaoyu03

    Spring 的话用实现 AnnotationFormatterFactory 接口自定义注解可不可行?

  • 主 資深大佬 : lihongjie0209

    @sonyxperia #5 我希望是一个和框架无关的实现, 只要符合 Java Bean 的规范就好了, 你没办法保证用户的输入从哪里来, 如果这些输入是从一个 Json 文件中读取出来的, 那么 Spring MVC 那一套就没办法用了

  • 主 資深大佬 : lihongjie0209

    @xiaoyu03 #6 我希望是一个和框架无关的实现, 只要符合 Java Bean 的规范就好了, 你没办法保证用户的输入从哪里来, 如果这些输入是从一个 Json 文件中读取出来的, 那么 Spring MVC 那一套就没办法用了

  • 主 資深大佬 : lihongjie0209

    @xbigfat #3 想问一下有没有现成的方案

  • 資深大佬 : Cbdy

    可以考虑自定义 getter

  • 主 資深大佬 : lihongjie0209

    @Cbdy #10 如果作为一个 Data Entity, 有可能是你这边处理一遍之后再序列化然后发送给别的程序, 那么 getter 中的逻辑是没办法被序列化的

  • 資深大佬 : Raymon111111

    拦截在方法上?

  • 資深大佬 : guyeu

    @lihongjie0209 #2 根据约定,JavaBeans 一定是可以被序列化的,你展示的注解给序列化和反序列化带来了不确定和不一致,由此可能产生无数 bug。

  • 主 資深大佬 : lihongjie0209

    @guyeu #13
    我希望的是这样的
    “`
    pojo.setName(Strings.trim(pojo.getName()))
    “`
    所以并不会破坏 JavaBean 的规范

  • 資深大佬 : chendy

    默认你用的是 jackson…
    直接 trim 字符串 https://stackoverflow.com/questions/6852213/
    默认值考虑用 Option 实现一下?

  • 主 資深大佬 : lihongjie0209

    @chendy #15 和 jackson 没关系, 我有一个

    pojo = new pojo(“hello “, null)

    我想找一个 library

    newPojo = library.process(pojo)

    assertEquals(newPojo.getName(), “hello”)
    assertTrue(newPojo.getDate()!=null)

  • 資深大佬 : junbaor

    如果要求是 get 方法返回的被处理,可以研究一下 lombok 的思路

  • 資深大佬 : chendy

    @lihongjie0209 emm…感觉可以自己反射一把梭了…

  • 主 資深大佬 : lihongjie0209

    @chendy #18 嗯, 没有合适的类库只能这样了

  • 資深大佬 : Cbdy

    @lihongjie0209 其实你的需求很简单,完全可以自己写一个

  • 資深大佬 : lychs1998

    自己定义一个 @Trim 注解,定义一个拦截器或切面,对请求参数的所有 field 进行检查,找到 @Trim 注解的就去检查格式是否符合,不符合的处理后继续。

  • 主 資深大佬 : lihongjie0209

    @Cbdy #20 我之前认为 BeanUtil 的 copy 很简单, 知道我遇到了 MapStruct 我才知道还能这么玩

  • 資深大佬 : xxdd

    MapStruct 这个测过效率没 一直没测过

  • 資深大佬 : lux182

    bean 只用了 lombok。

  • 資深大佬 : optional

    要想不依赖框架,只能用 annotation processor

  • 資深大佬 : Octopvs

    其实 BeanUtils 这些都是对 Bean 的 set 方法进行一个调用,那么可以在 set 方法里做一些手脚; A->A1->A,A1 的 set 方法做过手脚,那么就可以实现一个快速的转换。
    Person person = new Person(1L,”li”,20);
    PersonU pu = new PersonU();
    BeanUtils.copyProperties(person,pu);
    BeanUtils.copyProperties(pu,person);
    System.out.println(person);
    在 PersonU 中的 set 进行一个年龄+1

  • 主 資深大佬 : lihongjie0209

    @xxdd #23 目测是最好的, 完全代码生成, 不涉及反射

  • 資深大佬 : KentY

    @xxdd MapStruct 是常见的 mapping frameworks(相比 jmapper, dozer, modelmapper, orika)里性能最高的.

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具