You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用中spring-core的NonNull注解无依赖为何仍可运行?

问题解答

为啥没依赖也能正常跑?核心在注解的作用场景

  • Spring的@NonNull是个别名注解(靠@TypeQualifierNickname标记),它指向javax.annotation.Nonnull,但这玩意儿根本不是给程序运行时用的——它是给IDEA、SonarQube这类静态代码分析工具看的,用来帮你提前排查空指针问题。
  • Java注解有不同的保留级别:Spring的@NonNull用的是@Retention(CLASS),意思是编译后字节码里会保留它的信息,但JVM运行时不会主动去加载它关联的javax.annotation.Nonnull类。只有当你用反射代码去读取这个注解的元数据时,才会触发类加载,否则JVM根本不会管它。
  • 你的应用运行时根本没代码去碰这个注解的关联信息,所以JVM不会尝试加载那个不存在的类,自然不会报错。

你的猜想完全正确

确实可以创建这种引用其他包注解的别名注解,而且不需要依赖原注解的库。这类注解的价值都体现在编译阶段或静态分析阶段,只要运行时没人去解析它的关联内容,缺依赖也不会出问题。

内容的提问来源于stack exchange,提问作者kulatamicuda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:07:22