准备构建一个项目用于代码实战,第一步就卡在了项目结构上,发现对这块是知之甚少。
1. Spring Boot典型单体项目结构
src-main-java: 存放项目的源代码src-main-resources: 存放项目的静态资源和配置文件src-test: 存放测试用例代码 (话说这一块还没怎么写过)
src-main-java典型项目结构
不同的项目项目结构因人而异,因此这里只给出一个经典的项目结构
|_annotation:放置项目自定义注解
|_aspect:放置切面代码
|_config:放置配置类
|_constant:放置常量、枚举等定义
|__consist:存放常量定义
|__enums:存放枚举定义
|_controller:放置控制器代码
|_filter:放置一些过滤、拦截相关的代码
|_mapper:放置数据访问层代码接口
|_model:放置数据模型代码
|__entity:放置数据库实体对象定义
|__dto:存放数据传输对象定义
|__vo:存放显示层对象定义
|_service:放置具体的业务逻辑代码(接口和实现分离)
|__intf:存放业务逻辑接口定义
|__impl:存放业务逻辑实际实现
|_utils:放置工具类和辅助代码
2. 微服务项目结构
my-microservice-project/
├── pom.xml
├── service-a/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── mycompany/
│ │ │ │ └── servicea/
│ │ │ └── resources/
│ │ └── test/
│ │ ├── java/
│ │ └── resources/
│ ├── pom.xml
│ └── Dockerfile
├── service-b/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── mycompany/
│ │ │ │ └── serviceb/
│ │ │ └── resources/
│ │ └── test/
│ │ ├── java/
│ │ └── resources/
│ ├── pom.xml
│ └── Dockerfile
├── common/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ └── resources/
│ │ └── test/
│ │ ├── java/
│ │ └── resources/
│ └── pom.xml
└── api-gateway/
├── src/
│ ├── main/
│ │ ├── java/
│ │ └── resources/
│ └── test/
│ ├── java/
│ └── resources/
├── pom.xml
└── Dockerfile
- 根目录:整个项目的父pom文件,可以实现子模块依赖的统一管理和继承,避免子pom的重复配置
- 服务模块:单体springBoot结构
- 公共模块common:存放各个服务公用的代码(工具类、实体类、异常类、枚举类)等
- API网关模块:负责路由和转发请求