SuperAPI AI 工具集

kotlin-patterns

编程与开发

查看项目

更新于 10-15 19:56

技能介绍

用途:为 Kotlin + Spring Boot 4.x 后端服务提供统一的编码模式,在实现后端功能、编写服务、仓储或控制器时使用。版本号(Spring Boot、Kotlin、Jackson 3 等)以 kotlin-spring-boot 技能中的版本表为准,本技能不内联版本。

主要能力与约定: 实体使用 data class,包含 id、name、createdAt、updatedAt 等字段。 服务层事务传播:写方法用 @Transactional(REQUIRED)保证原子性;只读方法用 @Transactional(readOnly = true),单查询可不加注解;Propagation.NEVER 仅用于必须在事务外运行的编排器(如 outbox 发布器委托给 REQUIRES_NEW worker,或触发 @Async/外部 IO 的方法),写服务误用会导致静默故障。 提交后副作用:邮件、审计日志、级联事件、webhook 分发应在提交后执行,使用 @TransactionalEventListener(phase = AFTER_COMMIT) 配合 @Async,避免事务内失败回滚业务写入或泄漏事务上下文;需在 @Configuration 类上启用 @EnableAsync,并为生产环境定义具名 TaskExecutor bean(默认 SimpleAsyncTaskExecutor 会无界创建线程)。 仓储模式基于 JOOQ,使用 DSLContext 进行 selectFrom、insertInto、returning 等操作,并提供 Record 到实体的映射。 控制器实现 API 接口,返回 ResponseEntity,创建成功返回 201,否则 200;未找到时抛出 ResourceNotFoundRestException。 API 接口使用 @Tag、@Operation、@PostMapping、@GetMapping 等注解定义。 DTO 使用 data class 配合 @field:NotBlank、@field:Size 等校验注解。 异常处理:服务层抛出类型化异常,由 @RestControllerAdvice 转换为 RFC 7807 ProblemDetail(application/problem+json),使用 setProperty 添加扩展字段,不要手写 ErrorResponse DTO。 空安全:可选操作使用 ?.let{},使用 when 做穷尽匹配,避免非空断言,改用 .single() 或 .firstOrNull();幂等操作返回 Pair<Result, Boolean>。

使用方式:作为编码参考,在编写对应层代码时遵循上述模式;具体版本与依赖配置参见 kotlin-spring-boot 技能。

适用场景:Kotlin + Spring Boot 4.x 后端服务的实体、服务、仓储、控制器、API 接口、DTO、异常处理与空安全实现。

限制:资料未提供安装命令、收费信息、平台支持范围及具体版本号;版本相关事实需查阅 kotlin-spring-boot 技能,本技能不内联版本。