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

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

相关推荐
点心的游戏开发世界3 小时前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
phltxy3 小时前
C语言操作符详解
java·c语言·算法
步行cgn4 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
sunshine22 girl4 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
事圆则缓5 小时前
Kotlin 协程完全指南
开发语言·kotlin
我爱写代码i5 小时前
BeLink - 支持生成多种URL 缩短网址PHP源码
开发语言·php·短网址php源码
Java后端的Ai之路5 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
嘿嘿-666 小时前
Windows 一键使用 GPT-6 Astra:Codex CLI 配置教程
java·人工智能·windows·gpt·chatgpt·web
统计学小王子6 小时前
数学建模国赛倒计时4天——《统计模型精讲(混合效应模型R语言实现)》
开发语言·数学建模·r语言
知无不研6 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while