Android POJO 转换器 —> RapidOOO

博客搬迁至https://blog.wangjiegulu.com

RSS订阅:https://blog.wangjiegulu.com/feed.xml

原文链接:https://blog.wangjiegulu.com/2018/04/16/rapidooo-android-pojo-converter/

RapidOOO

Android POJO 转换器:根据 POJO 类编译时自动生成支持扩展互相绑定的领域对象。

English Version

Github: https://github.com/wangjiegulu/RapidOOO

为什么使用 RapidOOO?

我们在领域驱动设计中经常会在不同层级之间传递数据,例如 VO, PO, DO, DTO, BO等。Android 的开发中也经常会遇到这些情况,比如在 Android-CleanArchitecture 的 , 等。手工地进行拷贝转换的过程不但繁琐,而且错误的风险比较大,在新增、删除字段时也增加了维护的成本。Dozer 可以很好地解决这个问题,但是在 Android 上可能就不太适用了。

RapidOOO 可以做到:

在编译时针对指定的初始 POJO,可以自动生成 Java 类(比如 UserVO, UserBO 等),非反射。

可以在生成的 POJO 类中增加配置,添加新的字段(比如通过 User 中的 gender 在生成的 POJO(UserVO) 中扩展出一个 genderDesc 字段,并且与原来的 gender 类共存并进行双向绑定)

字段进行转换时可以通过指定 conversionMethodName, inverseConversionMethodName 等方法来进行特殊的转换,类似 Databinding 中的 @BindingMethod。

链式的 POJO 生成,如从 User 生成 UserDO, 从 UserDO 生成 UserBO, 从 UserBO 生成 UserVO...

生成类中自动生成转换方法 UserBo.create(User user), userBo.toUser()。

支持 POJO 继承.

支持对象池(比如 android.support.v4.util.Pools)。

怎么使用?

Gradle

implementation "com.github.wangjiegulu:rapidooo-api:x.x.x" annotationProcessor "com.github.wangjiegulu:rapidooo-compiler:x.x.x"

以下通过两个例子来说明:

User POJO:

public class User implements Serializable { private Long userId; private String username; private String nickname; private Integer age; private Integer gender; // getter setter }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzdxx.html