java
技术随笔
SpringBoot的推荐项目目录结构
Spring Boot 官方推荐约定优于配置(Convention over Configuration),合理的包结构能让组件扫描、自动装配、配置加载都更顺手。下面是一套常用的目录结构示例(根包 com.example.demo)。
一、代码层结构(src/main/java)
| 包名 | 用途 |
|---|---|
| com.example.demo | 工程启动类 Application.java(带 @SpringBootApplication,置于根包) |
| com.example.demo.domain / entity / model | 实体类(与数据库表映射的 POJO) |
| com.example.demo.repository / dao / mapper | 数据访问层(JPA Repository / MyBatis Mapper) |
| com.example.demo.service | 业务服务接口 |
| com.example.demo.service.impl | 业务服务实现类 |
| com.example.demo.controller / web / api | 前端控制器(接收 HTTP 请求) |
| com.example.demo.config | 配置类(@Configuration,如数据源、Security、Swagger) |
| com.example.demo.utils / common | 工具类、公共方法 |
| com.example.demo.constant | 常量 / 枚举定义 |
| com.example.demo.vo / dto | 数据传输对象(接口入参 / 出参) |
注意:启动类放在根包下,Spring Boot 才能默认扫描到它之下的所有子包组件;若组件不在根包下,需用 @SpringBootApplication(scanBasePackages = "...") 显式指定。
二、资源文件结构(src/main/resources)
| 路径 | 用途 |
|---|---|
| application.yml / application.properties | 主配置文件(也可放 config/ 下) |
| i18n/ | 国际化消息文件(messages_*.properties) |
| static/ | 静态资源(js / css / images),直接可访问 |
| templates/ | 模板文件(Thymeleaf / Freemarker 等) |
| mapper/ 或 resources 下的 xml | MyBatis 的 SQL 映射文件 |
| META-INF/spring.factories | 自动装配扩展(如需自定义 starter) |
三、测试与构建
测试代码放在 src/test/java 下,包结构与 main 对应;src/main/resources 与 src/test/resources 分离配置。pom.xml / build.gradle 里用 spring-boot-maven-plugin 打成可执行 jar 即可。