🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install github/awesome-copilot/java-springboot
💡 提示:需要 Node.js 和 NPM
Spring Boot 最佳实践
你的目标是遵循既定的最佳实践,帮助我编写高质量的 Spring Boot 应用程序。
项目设置与结构
- 构建工具: 使用 Maven (
pom.xml) 或 Gradle (build.gradle) 进行依赖管理。 - 启动器: 使用 Spring Boot 启动器(例如
spring-boot-starter-web、spring-boot-starter-data-jpa)来简化依赖管理。 - 包结构: 按功能/领域组织代码(例如
com.example.app.order、com.example.app.user),而不是按层组织(例如com.example.app.controller、com.example.app.service)。
依赖注入与组件
- 构造器注入: 始终对必需的依赖项使用基于构造器的注入。这使得组件更容易测试,并使依赖关系显式化。
- 不可变性: 将依赖字段声明为
private final。 - 组件原型: 适当地使用
@Component、@Service、@Repository和@Controller/@RestController注解来定义 Bean。
配置
- 外部化配置: 使用
application.yml(或application.properties)进行配置。YAML 因其可读性和分层结构而常被首选。 - 类型安全属性: 使用
@ConfigurationProperties将配置绑定到强类型的 Java 对象。 - 配置文件: 使用 Spring 配置文件(
application-dev.yml、application-prod.yml)来管理特定于环境的配置。 - 密钥管理: 不要硬编码密钥。使用环境变量,或专门的密钥管理工具,如 HashiCorp Vault 或 AWS Secrets Manager。
Web 层(控制器)
- RESTful 应用程序编程接口: 设计清晰一致的 RESTful 端点。
- DTO(数据传输对象): 使用 DTO 在应用程序编程接口层暴露和使用数据。不要直接将 JPA 实体暴露给客户端。
- 验证: 使用 Java Bean 验证(JSR 380)及其注解(
@Valid、@NotNull、@Size)在 DTO 上验证请求负载。 - 错误处理: 使用
@ControllerAdvice和@ExceptionHandler实现全局异常处理程序,以提供一致的错误响应。
服务层
- 业务逻辑: 将所有业务逻辑封装在
@Service类中。 - 无状态性: 服务应该是无状态的。
- 事务管理: 在服务方法上使用
@Transactional以声明方式管理数据库事务。在必要的粒度级别应用它。
数据层(仓库)
- Spring Data JPA: 通过扩展
JpaRepository或CrudRepository来使用 Spring Data JPA 仓库进行标准数据库操作。 - 自定义查询: 对于复杂查询,使用
@Query或 JPA Criteria API。 - 投影: 使用 DTO 投影从数据库仅获取必要的数据。
日志记录
- SLF4J: 使用 SLF4J 应用程序编程接口进行日志记录。
- 日志声明:
private static final Logger logger = LoggerFactory.getLogger(MyClass.class); - 参数化日志: 使用参数化消息(
logger.info("正在处理用户 {}...", userId);)而不是字符串拼接,以提高性能。
测试
- 单元测试: 使用 JUnit 5 和像 Mockito 这样的模拟框架为服务和组件编写单元测试。
- 集成测试: 使用
@SpringBootTest进行加载 Spring 应用程序上下文的集成测试。 - 测试切片: 使用像
@WebMvcTest(用于控制器)或@DataJpaTest(用于仓库)这样的测试切片注解来隔离地测试应用程序的特定部分。 - Testcontainers: 考虑使用 Testcontainers 进行可靠的、使用真实数据库、消息代理等的集成测试。
安全
- Spring Security: 使用 Spring Security 进行身份验证和授权。
- 密码编码: 始终使用像 BCrypt 这样的强哈希算法对密码进行编码。
- 输入清理: 通过使用 Spring Data JPA 或参数化查询来防止 SQL 注入。通过正确编码输出来防止跨站脚本攻击。
📄 原始文档
完整文档(英文):
https://skills.sh/github/awesome-copilot/java-springboot
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)