开发时实体类编写时需要注意的细节,以及常用的一些注解

最近在学习做微服务的项目,总结了一些平常没有注意到的细节,记录于此

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文件的优先级更高,一般用来定义注册中心的地址,以及服务所映射的端口

posted @ 2022-11-23 23:03  于道  阅读(390)  评论(0编辑  收藏  举报