Skip to content

Java Bean 规范

Spring Boot 项目的 Java Bean 规范,涵盖了命名规则、字段要求以及注解使用规范等方面。

1. Java Bean 整体要求

  • 无业务逻辑:JavaBean 不能包含任何业务逻辑或计算,只能作为数据容器。
  • 基本数据类型使用包装类型:所有的基本数据类型必须使用包装类型(例如 IntegerDoubleBoolean 等)。这样有助于避免空指针异常并统一处理空值。
  • 无默认值:不允许在字段上设置任何默认值,必须明确初始化或通过构造方法赋值。
  • 字段注释:每个字段必须添加注释,并且必须使用多行注释(即 /** ... */)。注释内容要清晰描述字段的含义、单位、用途等信息。
  • 简化方法:使用 Lombok 库简化 gettersetter 方法的生成,例如使用 @Getter@Setter 注解,避免手动编写 getter/setter。
  • 构造方法:建议使用 Lombok 提供的 @Builder@NoArgsConstructor 等注解来简化对象的构造方法以及 set 方法的生成。

2. JavaBean 名字划分

  • XxxEntity:数据库持久对象(或称 DO)。用于映射数据库表中的数据。类名与表名一致,字段与表中的列名一致。
  • XxxVO:返回前端的对象(或称 Resp)。用于响应前端数据,封装返回的业务数据。
  • XxxForm:前端请求对象(或称 Req)。用于接收前端传递的请求数据,可以作为请求参数。
  • XxxDTO:数据传输对象。用于服务之间的数据传输,通常用于跨系统或层之间的通信。
  • XxxBO:内部处理对象。仅用于业务层内部处理,不能暴露给前端或外部系统。

3. 数据对象命名与规范

XxxEntity

  • 结尾规范:类名以 EntityDO 结尾,且应与数据库表名一致。

    • UserEntityUserDO
  • 字段与数据库一致:类中的字段应与数据库中的列名一致,确保映射的准确性。不能遗漏任何字段,也不能多出字段。

    • :字段 userName 对应数据库中的 user_name
  • 字段注释:每个字段必须添加注释,并且注释内容应与数据库字段注释一致,描述字段的含义和用途。

    • java
      /**
       * 用户姓名
       */
      private String userName;
  • 日期类型统一:项目中的日期类型必须统一,推荐使用 java.time.LocalDateTimejava.time.LocalDate

XxxForm(请求对象)

  • 不继承自 EntityForm 不可以继承自 Entity

  • 可以继承其他对象Form 可以继承、组合其他 DTO、VO 或 BO 对象,作为请求数据的承载体。

  • 仅限请求数据Form 对象仅用于前端或 RPC 请求数据的传递,不应用于返回数据。

XxxVO(返回对象)

  • 不继承自 EntityVO 不可以继承自 Entity

  • 可以继承其他对象VO 可以继承、组合其他 DTO、VO 或 BO 对象,封装返回的业务数据。

  • 仅限返回数据VO 对象仅用于封装返回给前端或 RPC 的数据。

XxxBO(业务对象)

  • 不继承自 EntityBO 不可以继承自 Entity

  • 仅限服务层使用BO 对象只能用于服务层(如 servicemanagerdao 层)进行业务处理,不得用于 controller 层。

4. 字段命名规则

  • 命名规则:字段命名遵循小驼峰命名法(camelCase),即首字母小写,后续每个单词的首字母大写。

    • userNamebirthDateorderAmount
  • 避免使用保留字:不要使用 Java 保留字(如 classintfloat)作为字段名。

  • 数字字段:字段名应清晰表示其含义,不建议使用带有数字的字段名,除非在某些特殊情况下(如计数器字段、版本字段等)。

5. Lombok 注解使用

  • @Getter / @Setter:使用 Lombok 注解简化 getter/setter 方法的生成。

    java
    @Getter
    @Setter
    private String userName;
  • @Builder:用于简化对象的构建过程。它为类自动生成一个 builder 方法,用于创建对象。

    java
    @Builder
    public class UserDTO {
        private String userName;
        private String password;
    }
  • @NoArgsConstructor:为类自动生成一个无参构造方法。对于 JPA 或数据库映射常常需要无参构造函数。

    java
    @NoArgsConstructor
    public class UserEntity {
        private String userName;
        private String password;
    }

6. 日期与时间类型

项目中的日期类型必须统一,推荐使用以下类型:

  • java.time.LocalDate:用于日期表示(无时间部分)。
  • java.time.LocalDateTime:用于日期时间表示。

不要使用 java.util.Datejava.sql.Date,以保证一致性与可移植性。

7. 规范总结

  • 类名、字段名规范:类名采用驼峰命名法,且根据不同对象类型使用相应的后缀(如 EntityVODTOFormBO)。
  • 注释与文档:所有字段必须添加注释,并与数据库字段注释保持一致。
  • Lombok 简化代码:利用 Lombok 简化 getter、setter 方法的生成及构造方法等。
  • 不包含业务逻辑:JavaBean 不应包含业务逻辑,仅作为数据承载对象使用。

遵循这些规范可以大大提升代码的一致性、可维护性和可扩展性。