开发时实体类编写时需要注意的细节,以及常用的一些注解
最近在学习做微服务的项目,总结了一些平常没有注意到的细节,记录于此
1. 实体类的字段数据类型都使用包装类型
实体类涉及到的属性如果是int这样的基本数据类型,那么要使用其包装类型,因为包装类型默认为null,而基本数据类型会有默认值,比如int的默认值为0
public class Hello {
public static void main(String[] args) {
TestClass testClass = new TestClass();
System.out.println(testClass.a);
System.out.println(testClass.b);
}
}
class TestClass {
int a;
Integer b;
}
执行结果:
2. 字段适当使用Jackson注解
@JsonProperty
格式化属性名,在后端传回数据给前端的时候用到
比如后端某个实体类的字段名为userId,但前端需要接收的字段名为user_id,此时我们可以使用该注解,自定义后端传回的字段名
相当于在传回数据时给该属性进行了一次重命名
如图:
@JsonInclude
在后端返回给前端数据时,有些敏感数据我们不想传给前端(比如密码),于是我们会在后端把它置为null之后再将实体返回给前端,那么要怎么保证返回的json格式数据中不包含这个字段呢,此时可以使用@JsonInclude
具体用法就是在实体类的字段名直接加上该注解
@JsonInclude(JsonInclude.Include.NON_NULL)
如图:
测试:
可以看到,userId变成了user_id,password作为敏感数据没有传回
@JsonIgnoreProperties
JsonIgnoreProperties注解,可以用在类上,来告诉 Jackson 在序列化和反序列化 JSON 数据时忽略掉一些属性。
这样做的好处是,如果你的类中有一些属性在 JSON 数据中没有出现,使用这个注解就可以避免 Jackson 在序列化和反序列化时抛出异常。
比如,假设你有一个类 Person
,它包含了一个名字和一个年龄,你可以这样使用 JsonIgnoreProperties
注解:
@JsonIgnoreProperties({"name"})
public class Person {
private String name;
private int age;
// getters and setters
}
这样,当 Jackson 序列化或反序列化 Person
类的对象时,就会忽略掉名字这个属性,不会抛出任何异常。
3. application和bootstrap两种配置文件的区别
bootstrap文件的优先级更高,一般用来定义注册中心的地址,以及服务所映射的端口