project-项目结构和代码分层

172 阅读2分钟

准备构建一个项目用于代码实战,第一步就卡在了项目结构上,发现对这块是知之甚少。

1. Spring Boot典型单体项目结构

image.png

  • 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网关模块:负责路由转发请求