关于 null-safety
面向 Spring Boot 3 和 Spring Framework 6 项目的空值处理开发技能,说明注解约定、可空契约及 Java 与 Kotlin 混用注意事项,并提醒勿套用 Framework 7 默认规则。
主要功能
- 01Spring 空值注解使用指导
- 02可空参数与结果的标注建议
- 03检查仓库返回类型契约
- 04协调 Java 与 Kotlin 注解设置
- 05涵盖校验和迁移注意事项
适用场景
- 01审查 Boot 3 模块的空值处理
- 02标注服务或仓库 API 的可空项
- 03检查 Java 与 Kotlin 空值设置
- 04避免意外更改契约
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rrezartprebreza/ spring-boot-skills --skill null-safety安装后在 Claude Code 中输入/null-safety确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlexamples/bad-null-contract.javagood-package-info.java详细介绍
空值安全(Boot 3 / Framework 6)
使用项目支持的空值模型。Spring Framework 6 通常使用
org.springframework.lang.Nullable、@NonNull 和包级别的 @NonNullApi。可以有意引入 JSpecify,但不要在 Boot 3 模块中假设 Framework 7 的迁移语义。
@NonNullApi
package com.example.orders;
import org.springframework.lang.NonNullApi;
对确实可能为空的结果和参数添加 @Nullable。明确声明仓库返回类型,在边界处验证外部输入,并在混用 Java 和 Kotlin 时使用与这些注解相匹配的 Kotlin 编译器设置。如果项目独立采用 JSpecify 标准,则应在模块边界处保持一致,并记录所选用的检查器。
注意事项
- Agent 假设 Framework 7 默认使用 JSpecify——Boot 3 项目通常使用 Spring 的旧版注解。
- Agent 使用
@NonNullApi,却没有导入包注解——包元数据必须能够编译,并纳入版本控制。 - Agent 将每个值都标记为
@NonNull——应先设定包级默认值,只为可能为空的例外添加注解。 - Agent 将注解当作运行时验证——输入验证应使用 Bean Validation 或显式检查。
- Agent 更改仓库的可空契约,却没有更新调用方——保留
Optional、可空值和空集合的语义。 - Agent 混用 JSpecify 和 Spring 注解,却没有迁移计划——选择一种模块边界策略。
评论
支持 Markdown