源码注解 /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,框架运行时检测,为空直接抛出异常

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

相关推荐
GIS数据转换器1 小时前
地下空间综合管廊运营管理平台
大数据·开发语言·人工智能·经验分享·perl
猿究院_夏燊6 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog6 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿7 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河7 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年7 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Jlzn88887 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
Williamtym7 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
香吧香7 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
DongQiShanRen7 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习