-
只要是用于网络传输的对象,我们都认为它可以当作是DTO对象,也就是Controller层的入参以及返回值都是DTO对象
如果我们约束某个对象是DTO对象那我们就将其改名为:xxxDTO。 -
DTO的转化,我们在接收到DTO之后基本都是需要将DTO对象内的某些属性赋值给entity的。我们知道的最常见的赋值方式:使用构造函数直接创建实例的时候赋值,还可以实例创建之后使用set函数一个一个的赋值。
上面的两种赋值方式,很容易理解,但是这两种方式在需要赋值的属性数量比较多的时候,就会很繁琐。
所以:我们可以找一些Unit去使用,比如:org.springframework.beans.BeanUtils#copyProperties,
BeanUtils.copyProperties是一个浅拷贝方法,复制属性时,我们只需要把DTO对象和要转化的对象两个的属性值设置为一样的名称,并且保证一样的类型就可以了。
例如: -
我们要尽量对公用步骤进行封装。
-
要为我们的抽象接口做好泛型
-
我们要将api的返回值写成DTO而不是真正的entity,减少对实体的暴露
-
我们可以将某些与某个类有深层联系的与类结合,比如上面的DTO转entity我们可以直接将转换的方法放在DTO类中。
-
进行bean验证:hibernate 提供的 jsr 303 实现
-
bean 中的链式风格
Student student = new Student()
.setAge(24)
.setName("zs");
@Accessors(chain = true)注解,
这个注解是来自与Lombok里的,具体的作用是开启链式编程,让我们写代码更加方便。
@Accessors(chain = true)
@Setter
@Getter
public class Student {
private String name;
private int age;
}
- 静态构造方法
//以前创建list
List<String> list = new ArrayList<>();
//使用静态构造放法:
List<String> list = Lists.newArrayList();
//Lists是一个工具类,
我们有一个Student类,里面有name,age属性。如果我们要求必须传入name,那我们可以通过构造方法约束,
10. 使用 builder