Java 后端项目(基于 Spring Boot / Spring Cloud)的通用规范与配置清单

📅 2026/7/8 12:42:35 👁️ 阅读次数 📝 编程学习
Java 后端项目(基于 Spring Boot / Spring Cloud)的通用规范与配置清单

一、项目包结构(Package Naming)

com.yourcompany.projectname ├── controller// 控制器层,接收请求├── service// 业务逻辑层│ ├── impl// 服务实现类├── repository// 数据访问层(DAO),或使用 mapper├── model// 实体类(与数据库表对应)│ ├── dto// 数据传输对象(API 进出参数)│ ├── vo// 视图对象(用于前端展示)├── config// 配置类(如 Redis、Swagger、Security)├── common// 通用工具、常量、异常、枚举│ ├── constant │ ├── enums │ ├── exception │ ├── utils ├── interceptor// 拦截器├── filter// 过滤器├── aspect// AOP 切面├── event// 事件监听└──Application.java// 启动类

命名规则

  • 包名全小写,多个单词用.分隔,如com.example.usercenter
  • 分层清晰,避免循环依赖。

二、常用类文件命名规范

类型命名示例说明
启动类XxxApplication.java唯一,包含@SpringBootApplication
控制器(Controller)UserController.java处理 HTTP 请求,通常使用@RestController
服务接口(Service)UserService.java业务逻辑接口
服务实现(Impl)UserServiceImpl.java放在service.impl包中,实现UserService
数据访问(DAO)UserRepository.java/UserMapper.java继承 JPA Repository 或 MyBatis Mapper
实体类(Entity)User.java对应数据库表,一般与表名相同(驼峰映射)
DTO(数据传输对象)UserCreateDTO.java,UserQueryDTO.java用于接收前端参数或返回特定数据,与 Entity 解耦
VO(视图对象)UserVO.java用于最终返回前端展示,可组合多个字段
配置类RedisConfig.java标注@Configuration,提供 Bean
常量类Constants.javaRedisKeyConstants.java存放静态 final 常量
枚举类UserStatusEnum.java定义状态、类型等枚举值
工具类DateUtils.java静态方法,通常标注@UtilityClass(Lombok)
异常类BusinessException.java继承RuntimeException,配合全局异常处理
拦截器/过滤器LoginInterceptor.java,LogFilter.java实现相应接口
切面类LogAspect.java标注@Aspect,用于日志、权限等横切逻辑

命名约定

  • 接口与实现:接口不加I前缀(避免 C# 风格),实现类加Impl后缀。
  • DTO 按用途命名:XxxRequest,XxxResponse,XxxQuery,XxxCommand
  • 测试类:XxxTest.javaXxxTests.java,放在src/test/java对应包下。

三、配置文件命名及作用

Spring Boot 项目通常使用application.ymlapplication.properties,多环境配置遵循application-{profile}.yml模式。

文件名用途
application.yml/application.properties主配置文件,存放通用配置
application-dev.yml开发环境配置
application-test.yml测试环境配置
application-prod.yml生产环境配置
bootstrap.ymlSpring Cloud 场景下,比 application 优先加载,用于配置中心(如 Nacos)
logback-spring.xml/log4j2-spring.xml日志框架配置,Spring 可识别-spring后缀以支持 profile
application-{profile}.properties与 yml 等价,视团队习惯选择
application-local.yml本地专用配置(不提交到版本库,用于覆盖)

推荐:用 yml 格式,清晰层次,避免重复。


四、接口(API)编写规范

1. URL 命名(RESTful 风格)

  • 使用名词复数,小写,用/分隔,如:
    • GET /api/users→ 查询用户列表
    • GET /api/users/{id}→ 查询单个用户
    • POST /api/users→ 创建用户
    • PUT /api/users/{id}→ 全量更新
    • PATCH /api/users/{id}→ 部分更新
    • DELETE /api/users/{id}→ 删除用户
  • 使用@RequestMapping("/api")作为根路径。

2. HTTP 方法对应操作

方法含义
GET查询
POST创建
PUT全量更新
PATCH部分更新
DELETE删除

3. Controller 方法命名

  • 方法名尽量体现业务,如listUsers(),getUserById(),createUser(),updateUser(),deleteUser()
  • 使用@GetMapping,@PostMapping等注解,明确路径。

4. 参数接收

  • 路径参数:@PathVariable
  • 查询参数:@RequestParam
  • 请求体:@RequestBody
  • 混合使用 DTO 接收复杂对象。

5. 统一响应格式

建议封装一个通用Result<T>类,包含code,message,data,让前端统一处理。


五、常用 Maven / Gradle 插件

Maven 插件(pom.xml)

插件作用
spring-boot-maven-plugin打包可执行 jar,支持mvn spring-boot:run运行
maven-compiler-plugin指定 Java 编译版本(如 17)
maven-surefire-plugin运行单元测试,可配置跳过测试
maven-resources-plugin资源文件复制与过滤
lombok-maven-plugin让 Lombok 在编译时生成 getter/setter(通常无需额外配置,仅需依赖)
maven-dependency-plugin依赖分析,管理版本冲突
maven-jar-plugin/maven-assembly-plugin自定义打包方式(如将依赖打进一个 jar)
spotless-maven-plugin/formatter-maven-plugin代码格式化(统一风格)
jacoco-maven-plugin代码覆盖率统计

Gradle 插件(build.gradle)

插件对应作用
org.springframework.boot同上,Spring Boot 支持
io.spring.dependency-management依赖版本管理(BOM)
java/java-libraryJava 编译
ideaIDEA 专属配置
lombokLombok 支持(或通过依赖启用)
com.diffplug.spotless代码格式化
jacoco覆盖率报告

六、常用 IDE 插件(以 IntelliJ IDEA 为例)

插件名称用途
Lombok支持@Data,@Slf4j等注解,减少样板代码
Spring Boot Assistant/Spring Initializr and Assistant快速查看配置文件、运行端点,提供 Spring 相关提示
MyBatisX/MyBatis Log FreeMyBatis 项目必备,支持 XML 与 Mapper 跳转,日志 SQL 还原
Alibaba Java Coding Guidelines代码规约检查,帮助写出更规范的代码
SonarLint静态代码分析,实时提示潜在 bug 和异味
MapStruct Support如果使用 MapStruct 做 DTO 转换,提供支持
Gradle / Maven Helper查看依赖冲突,快速运行生命周期命令
GitToolBox/GitHub Copilot提高 Git 效率或 AI 辅助编码(可选)
Rainbow Brackets括号颜色高亮,便于阅读嵌套代码
Translation英文翻译,帮助理解命名和注释

七、其他关键文件

文件名用途
pom.xml/build.gradle项目构建文件,管理依赖和插件
.gitignore忽略编译输出、IDE 配置、日志等不应提交的文件
README.md项目简介、启动说明、技术栈、API 文档链接
Dockerfile构建 Docker 镜像,用于容器化部署
docker-compose.yml本地开发环境编排(如 MySQL、Redis)
application.yml见上文
logback-spring.xml日志配置(若不使用默认)
config/src/main/resources存放配置文件,注意 Maven 会打包进 classpath

八、命名总结(快速记忆口诀)

  • :全小写,点分隔,分层清晰。
  • :大驼峰(PascalCase),名词,表达实体或功能。
  • 方法:小驼峰(camelCase),动词 + 名词,如getUserById
  • 变量:小驼峰,名词,明确意义。
  • 常量:全大写,下划线分隔,如MAX_RETRY_COUNT
  • 枚举:类名大驼峰,枚举值全大写。
  • 接口 URL:资源名词复数,小写,使用/层级。

九、给小白的一些额外建议

  1. 遵循命名约定:团队内部统一,借助插件(如 Alibaba 规约)检查。
  2. 多利用 IDE 模板:如 IDEA 的live templates创建快捷代码片段。
  3. 善用依赖管理:使用 Spring Boot Starter 可以减少繁琐配置。
  4. 环境分离:开发、测试、生产配置独立,避免混淆。
  5. 日志留痕:使用 Lombok 的@Slf4j,方便调试和问题定位。
  6. 版本控制:及时提交,写好 commit message,遵循语义化版本。

这份清单涵盖了从项目结构到编码细节的大多数场景,希望它能帮助你快速上手并养成良好的习惯。如果你在具体使用中遇到问题,欢迎随时查阅官方文档或社区实践,也欢迎向我提问。祝编码愉快!🚀