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

Java注解创建局部变量:@Slf4j如何暴露log变量供代码调用

@Slf4j注入log变量的实现逻辑

你看到的@Slf4j注解本身仅为标记用的元数据,实际的log变量注入逻辑由Lombok注解处理器在Java编译阶段完成,和注解本身的定义无关。

核心原理说明

  • 你贴出的注解源码中@Retention(RetentionPolicy.SOURCE)已经明确说明该注解仅保留在源码阶段,编译生成class文件后就会被擦除,本身不包含任何运行时逻辑。
  • Lombok会在JDK的编译流程中注册自定义的注解处理器,在编译的注解处理阶段扫描所有标注了@Slf4j的类。
  • 扫描到对应类后,Lombok会自动向类中插入静态log成员变量的代码,默认插入的内容为:
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(当前标注类的类名.class);
  • 如果指定了topic参数,比如@Slf4j(topic = "customLogger"),插入的代码会调整为:
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger("customLogger");

验证方式

你可以直接反编译项目中使用了@Slf4j注解的类的class文件,就能看到自动生成的log成员变量,源码中不需要显式定义该变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:24:03