源码注解 /class 注解 / 运行时注解三者生命周期

Java 注解生命周期简图

三类保留策略:SOURCE / CLASS / RUNTIME

分层对照表

保留策略 RetentionPolicy 代表注解 IDE 能读到 class 里存在 运行时反射可读
SOURCE 源码级 @Nullable(Spring)、//注释 ✅ 可以 ❌ 编译后删除 ❌ 不能
CLASS 字节码级 部分 Lombok 内部注解 ✅ 可以 ✅ 存在 ❌ 默认丢弃
RUNTIME 运行时级 @Autowired、@RequestMapping ✅ 可以 ✅ 存在 ✅ 反射拿到

关键结论提炼

  • org.springframework.lang.@Nullable 只活在 .java 源码 ,编译一出直接消失; 只有 IDEA、Sonar 这类静态工具看得见,Spring 运行时完全看不到。

  • @Autowired 这种运行时注解 一路保存到程序运行,Spring 依靠反射解析注解实现依赖注入。

容易混淆两组注解区分

  • org.springframework.lang.NonNull 👉 SOURCE、仅静态提示,不会运行校验
  • jakarta.validation.NotNull(参数校验) 👉 RUNTIME,框架运行时检测,为空直接抛出异常

一个是给开发看的 "约定提醒",一个是线上生效的 "强制校验"。

相关推荐
FYKJ_20101 小时前
springboot助农产品销售商城05829-计算机课程设计、毕业设计
java·spring boot·python·mysql·spark·django
Yunovian1 小时前
AI时代,针对模型与应用,浅谈一下各编程语言
开发语言·c++·人工智能·python·ai·rust·ai编程
周杰伦fans2 小时前
构建真正智能的CAD AI绘图代理
开发语言·人工智能·c#
user_admin_god4 小时前
第 10 篇:拼上下文与生成——预算、边界与防幻觉
java·人工智能·spring boot·语言模型
用户3126874877204 小时前
GC 算法与垃圾收集器演进:从 Serial 到 ZGC
java
天天被压力4 小时前
【别再到处找免费股票数据API了:官方204个接口,32篇一次讲透 #02】涨停跌停与特色股池:5类股池接口一次拉全
java·人工智能·python
斯维赤4 小时前
从 @Tool 到 Agent 流水线:LangChain4j 进阶教学,一个库打全套
java·后端
zhanghaha13144 小时前
Python进阶教程:35_PyQt (保姆级零基础教程)
开发语言·python·pyqt
SimonKing4 小时前
SSE项目`nexus-sse`持续优化,不一样的视觉效果
java·后端·程序员
斑鸠喳喳4 小时前
读写锁模式 Read-Write Lock
java·后端