Spring Boot 工程结构推荐

本文推荐一种 Spring Boot 工程结构,根据笔者日常工作积累。

src
| -- assembly
| -- main
|    | -- bin
|    | -- java
|    |    | -- com
|    |    |    | -- organization
|    |    |    |    | -- project
|    |    |    |    |    | -- module
|    |    |    |    |    |    | -- config
|    |    |    |    |    |    | -- controller
|    |    |    |    |    |    | -- constant
|    |    |    |    |    |    | -- dao
|    |    |    |    |    |    |    | -- impl
|    |    |    |    |    |    | -- domain
|    |    |    |    |    |    |    | -- bo
|    |    |    |    |    |    |    | -- dto
|    |    |    |    |    |    |    | -- po
|    |    |    |    |    |    |    | -- vo
|    |    |    |    |    |    | -- exception
|    |    |    |    |    |    | -- manager
|    |    |    |    |    |    |    | -- impl
|    |    |    |    |    |    | -- service
|    |    |    |    |    |    |    | -- impl 
|    |    |    |    |    |    | -- task
|    |    |    |    |    |    | -- util
|    |    |    |    |    |    | -- XXXApplication.java
|    | -- lib
|    | -- resources
|    |    | -- config
| -- test
LICENSE.txt
NOTICE.txt
README.txt

说明:

  • src
    • assembly:存放 Maven Assembly 功能所需的文件。
    • main
      • bin:存放启动应用脚本,Spring Boot 应用通常打包为 jar 包,运行时使用 java -jar 命令,如果需要通过启动命令配置一些参数,则直接使用 java -jar 命令会不方便,通常会编写 SHELL 或 Python 脚本执行安装、启动、检查状态、停止、卸载等日常运维功能。
      • java
        • com/organization/project/modulejava 代码根路径,只存放应用主类 XXXApplication.java
          • config:存放启动配置类,如自定义 DataSource 配置。
          • controller:开放 API 访问层,也可命名为 handler
          • constant:存放共享自定义常量类,注意每层使用的常量类放在各自包下,譬如 controller 层使用的常量类且不共享给其它层使用,则在 controller 下定义一个子包 constant 存放。
          • dao:存放数据访问类(Data Access Object)接口定义。
            • impl:存放数据访问类(Data Access Object)接口实现。
          • domain:存放领域模型。
            • bo:Business Object:业务对象。
            • dto:Data Transfering Object,业务系统间传输的对象。
            • po:Persistent Object,即 Data Object,与数据表模型一一对应,不用 do 定义包名是因为 do 是关键字。
            • query:Query Object,前端传来的封装查询参数的对象。
            • vo:View Object,返回给前端的对象。
          • exception:存放共享自定义异常类,注意每层使用的异常类放在各自包下,同 constant 一致。
          • managerservice 通用能力的下沉并封装调用外部接口逻辑,供 service 层调用,存放接口定义。
            • impl:存放 manager 接口实现。
          • service:封装核心业务处理逻辑供 controller 层调用,存放接口定义。
            • impl:存放 service 接口实现。
          • task:存放自定义任务,如定时任务等,也可命名为 job
          • util:存放工具类。
      • lib:存放运行应用需要的第三方库文件,譬如指定运行的 JRE 版本,如应用需要使用 JRE 11 启动运行,但是部署服务器上 JAVA_HOME 指向 JRE 8 安装路径,则可以将需要的 JRE 11 安装包存放在此目录下。
      • resources:存放启动应用所需的资源文件。
        • config:存放启动应用所需的配置类资源文件。
  • LICENSE.txt
  • NOTICE.txt
  • README.txt

你可能感兴趣的:(Spring Boot 工程结构推荐)