seed-spring 项目结构

Maven 配置文件
  • pom.xml
包结构
  • domain(JPA 实体映射对象)
  • repository(JPA 操作接口)
  • service(业务逻辑)
  • service.dto(数据传输对象)
  • service.spec(动态查询条件专属对象, 减轻 service 中代码量)
  • service.mapper(映射业务对象, 分担 service 中重复代码, 比如关联关系)
  • controller(路由控制对象)
  • controller.vm(View-Model 对象, 输入参数接受者)
  • controller.query(查询参数接受者)
  • config(配置类)
  • security(安全配置类, 授权验证等操作)
  • util(工具类)
项目配置文件

application.yml(主配置文件)
application-dev.yml(开发环境配置文件)
application-test.yml(测试环境配置文件)
application-prod.yml(生产环境配置文件)

重要笔记
  1. 为了防止 JPA 无法正常映射字段而报错, 可以这么写
@Column(nullable = "`status`", nullable = false)
Integer status;
  1. 针对一张 t_user 表的增删改差,所需要的类为以下

    1. User(JPA 实体映射到表)
    2. UserRepository(JPA 操作实体的接口)
    3. UserService(业务类)
    4. UserDTO(数据传输对象)
    5. UserSpec(动态查询分担者)
    6. UserMapper(业务逻辑分担者)
    7. UserController(路由类)
    8. UserVM(入参类)
    9. UserQuery(查询参数类)
  2. 代码生成器不会在 DTO 上自动生成字段验证注解,如有需要自行根据场景设置

  3. 布尔值是需要用到引用类型的,因为他有空的情况

  4. 所有 Spec 需要为 class, 因为可以用 @Slf4j

  5. 以后所有检查唯一属性写在 Query 里

  6. 一个 Service 里默认业务方法和对应 Controller 的路由方法

    1. exists(只读, 按条件查询是否存在)
    2. getOne(只读, 通过 ID 获取一个)
    3. getAll(只读, 按条件查询 list, 有数量限制)
    4. getPaged(只读, 按条件查询 page, 有数量限制)
    5. create(创建, 已改为一个一个赋值, 属性多关联多时好手动控制)
    6. update(修改, 已改为一个一个赋值, 属性多关联多时好手动控制)
    7. deleteInBatch(删除)
  7. UserVM, UserQuery 是否继承 UserDTO, 继承是为了方便属性的获取, 但如果不希望暴露某些属性, 需要考虑是否运用其他 POJO

  8. 个包之间的引用原则

    • controller 只引用 service, 不写业务逻辑
    • service 只引用 mapper, repository 和 其他 service, 所有业务逻辑在此
  9. 所有对其他类和方法的应用都应该使用 this 关键字, 因为这样看到 this 就知道这是一个引用

  10. http put 一般用于创建, http post 一般用于修改, http delete 一般用于删除

  11. 每一个 Service 业务类都应该有一个对应的 ServiceTest 测试类

  12. 如果用了 Audit, 那么保存的时间戳只能是毫秒

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容