的通用规范与配置清单)
一、项目包结构Package Namingcom.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控制器ControllerUserController.java处理 HTTP 请求通常使用RestController服务接口ServiceUserService.java业务逻辑接口服务实现ImplUserServiceImpl.java放在service.impl包中实现UserService数据访问DAOUserRepository.java/UserMapper.java继承 JPA Repository 或 MyBatis Mapper实体类EntityUser.java对应数据库表一般与表名相同驼峰映射DTO数据传输对象UserCreateDTO.java,UserQueryDTO.java用于接收前端参数或返回特定数据与 Entity 解耦VO视图对象UserVO.java用于最终返回前端展示可组合多个字段配置类RedisConfig.java标注Configuration提供 Bean常量类Constants.java或RedisKeyConstants.java存放静态 final 常量枚举类UserStatusEnum.java定义状态、类型等枚举值工具类DateUtils.java静态方法通常标注UtilityClassLombok异常类BusinessException.java继承RuntimeException配合全局异常处理拦截器/过滤器LoginInterceptor.java,LogFilter.java实现相应接口切面类LogAspect.java标注Aspect用于日志、权限等横切逻辑命名约定接口与实现接口不加I前缀避免 C# 风格实现类加Impl后缀。DTO 按用途命名XxxRequest,XxxResponse,XxxQuery,XxxCommand。测试类XxxTest.java或XxxTests.java放在src/test/java对应包下。三、配置文件命名及作用Spring Boot 项目通常使用application.yml或application.properties多环境配置遵循application-{profile}.yml模式。文件名用途application.yml/application.properties主配置文件存放通用配置application-dev.yml开发环境配置application-test.yml测试环境配置application-prod.yml生产环境配置bootstrap.ymlSpring Cloud 场景下比 application 优先加载用于配置中心如 Nacoslogback-spring.xml/log4j2-spring.xml日志框架配置Spring 可识别-spring后缀以支持 profileapplication-{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. 统一响应格式建议封装一个通用ResultT类包含code,message,data让前端统一处理。五、常用 Maven / Gradle 插件Maven 插件pom.xml插件作用spring-boot-maven-plugin打包可执行 jar支持mvn spring-boot:run运行maven-compiler-plugin指定 Java 编译版本如 17maven-surefire-plugin运行单元测试可配置跳过测试maven-resources-plugin资源文件复制与过滤lombok-maven-plugin让 Lombok 在编译时生成 getter/setter通常无需额外配置仅需依赖maven-dependency-plugin依赖分析管理版本冲突maven-jar-plugin/maven-assembly-plugin自定义打包方式如将依赖打进一个 jarspotless-maven-plugin/formatter-maven-plugin代码格式化统一风格jacoco-maven-plugin代码覆盖率统计Gradle 插件build.gradle插件对应作用org.springframework.boot同上Spring Boot 支持io.spring.dependency-management依赖版本管理BOMjava/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、Redisapplication.yml见上文logback-spring.xml日志配置若不使用默认config/或src/main/resources存放配置文件注意 Maven 会打包进 classpath八、命名总结快速记忆口诀包全小写点分隔分层清晰。类大驼峰PascalCase名词表达实体或功能。方法小驼峰camelCase动词 名词如getUserById。变量小驼峰名词明确意义。常量全大写下划线分隔如MAX_RETRY_COUNT。枚举类名大驼峰枚举值全大写。接口 URL资源名词复数小写使用/层级。九、给小白的一些额外建议遵循命名约定团队内部统一借助插件如 Alibaba 规约检查。多利用 IDE 模板如 IDEA 的live templates创建快捷代码片段。善用依赖管理使用 Spring Boot Starter 可以减少繁琐配置。环境分离开发、测试、生产配置独立避免混淆。日志留痕使用 Lombok 的Slf4j方便调试和问题定位。版本控制及时提交写好 commit message遵循语义化版本。这份清单涵盖了从项目结构到编码细节的大多数场景希望它能帮助你快速上手并养成良好的习惯。如果你在具体使用中遇到问题欢迎随时查阅官方文档或社区实践也欢迎向我提问。祝编码愉快