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

2020-01-13 15:41:10 +08:00
 lihongjie0209

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

Class PoJo {



	@Trim
	private String name;

	@Default(value= new Date())
     private Date date;


}

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

4864 次点击
所在节点    Java
30 条回复
clf
2020-01-13 16:59:34 +08:00
自己定义一个 @Trim 注解,定义一个拦截器或切面,对请求参数的所有 field 进行检查,找到 @Trim 注解的就去检查格式是否符合,不符合的处理后继续。
lihongjie0209
2020-01-13 17:04:03 +08:00
@Cbdy #20 我之前认为 BeanUtil 的 copy 很简单, 知道我遇到了 MapStruct 我才知道还能这么玩
xxdd
2020-01-13 17:49:44 +08:00
MapStruct 这个测过效率没 一直没测过
lux182
2020-01-13 17:54:09 +08:00
bean 只用了 lombok。
optional
2020-01-13 17:54:18 +08:00
要想不依赖框架,只能用 annotation processor
Octopvs
2020-01-13 19:30:05 +08:00
其实 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
2020-01-13 20:29:18 +08:00
@xxdd #23 目测是最好的, 完全代码生成, 不涉及反射
KentY
2020-01-13 21:58:44 +08:00
@xxdd MapStruct 是常见的 mapping frameworks(相比 jmapper, dozer, modelmapper, orika)里性能最高的.
szq8014
2020-01-17 11:09:24 +08:00
感觉可以看看 lombok enhance 一下
liuzhaowei55
2020-01-19 09:55:22 +08:00
这应该就是 set,get 存在的意义吧,不然就是为了 private 而 private

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/637517

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX