Skip to content

代码设计

huangchengxing edited this page Feb 15, 2023 · 1 revision

核心概念

“根据 A 的 key 值拿到 B,再把 B 的属性映射到 A”,围绕着这句话,crane4j 抽象出了用于实现功能核心组件,与各个步骤对应的名词。提前了解可能会更有助于阅读后面的文档。

1、装配、拆卸、填充

crane4j 中,“根据 A 的 key 值拿到 B,再把 B 的属性映射到 A” 这段话对应的就是一次装配操作,在代码中就是一个 @Assemble 注解:

public class A {
    @Assemble(namespace "foo", props = @Mapping(ref = "name"))
    private Integer key;
    private String name;
}

而若待处理的对象有需要提取的嵌套对象,则将把 “把 A 字段里嵌套的对象取出并展开” 这一操作称为拆卸操作,在代码中对应一个 @Disassemble 注解:

public class A {
    @Disassemble(type = B.class)
    private B b;
}

为了在一次批处理中尽可能多的处理同一类型的对象,拆卸操作一般都发生在装配操作之前。

如果一个要处理完一个对象,则这个过程可能需要完成多次拆卸和装配操作,这一整个过程,可以直接称其为填充操作

2、组件

“根据 A 的 key 值拿到 B,再把 B 的属性映射到 A”,围绕着这句话,crane4j 抽象出了用于实现功能核心组件:

  • 数据源容器 Container:用于提供数据源的组件,用于为“根据 A 的 key 值拿到 B”;
  • 操作配置 Operation:用于存储完成一次填充操作所需的处理器和数据源容器以及属性映射配置的对象,即上述行为的执行配置;
  • 操作处理器 OperationHandler:即实际用于实际用于完成装配、拆卸操作,用于完成上述行为的主体;
  • 类级操作配置 BeanOperation:与 Class 一对一,用于存放一个类型对应的所有操作配置;
  • 类级操作执行器 BeanOperationExecutor:用于根据类操作配置,驱动处理器完成全部操作的组件;

Clone this wiki locally