本文推荐一种 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/module:java代码根路径,只存放应用主类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一致。 -
manager:service通用能力的下沉并封装调用外部接口逻辑,供service层调用,存放接口定义。-
impl:存放manager接口实现。
-
-
service:封装核心业务处理逻辑供controller层调用,存放接口定义。-
impl:存放service接口实现。
-
-
task:存放自定义任务,如定时任务等,也可命名为job。 -
util:存放工具类。
-
-
-
lib:存放运行应用需要的第三方库文件,譬如指定运行的 JRE 版本,如应用需要使用 JRE 11 启动运行,但是部署服务器上JAVA_HOME指向 JRE 8 安装路径,则可以将需要的 JRE 11 安装包存放在此目录下。 -
resources:存放启动应用所需的资源文件。-
config:存放启动应用所需的配置类资源文件。
-
-
-
LICENSE.txtNOTICE.txtREADME.txt