扒一扒这个注解,我发现还有点意思。 (中)

简介: 扒一扒这个注解,我发现还有点意思。 (中)

不知道是不是我个人的感觉,我觉得作者回复这个问题的时候已经有一点怒气了:这都是些什么问题啊?前我已经回复了两次不受影响啊?怎么感觉我的项目使用者怎么都不了解 Lombok 的基本原理呢?

在作者回复完这个冒失的提问者之后,这个提问者还是很礼貌的回复了一下:


image.png

谢了老铁,我检查了,我使用的是 SpringBoot 默认的 logback。

作者也把这个问题给置顶了,且修改了这个 issue 的标题。

所以,经过前面的一番解读,现在你再看这个标题:

image.png

为什么作者要强调“itself”,因为 Lombok 确实是提供了日志的功能,但是至于引用什么包,哪个版本的包,和 Lombok 都没有任何关系。 Lombok 本身(itself)是安全的。

最最后,作者给了 log4j 漏洞对于 Lombok 的 Latest assesment(最新评估),算是总结性发言:


image.png


给大家翻译一下关键的东西。

这个漏洞只存在于 2.16.0 版本以下的 Log4j code 包中,而不存在于任何其他日志框架中。

Lombok 没有传递依赖任何 Log4j 包,也没有声明对任何东西的依赖。

如果你使用任何 Lombok 的注解,比如 @Log4j,Lombok 将生成使用这些库的代码,但是你的项目里面必须要包含对这些库的依赖,否则 Lombok 生成的代码将无法编译。

同样地,你要负责在你的运行时中拥有这些包,否则类的初始化可能会失败。

在 Lombok 测试代码中,我们曾经有一个包含这个漏洞的版本,但是由于测试不处理任何用户输入(测试是硬编码的),而且生成的代码甚至没有被执行,运行测试并没有导致执行测试的机器上出现 RCE(远程代码/命令执行漏洞)。

所以,老铁们,Lombok 本身不需要做任何改变,也不对你的项目负任何安全责任,毕竟包不是我们引进来的。

如果你不同意目前的评估,请在这个问题上添加评论。

但是,请确保你已经阅读了其他评论,并确保你理解了这个问题。

最后这两句话,单独拎出来,我可太喜欢这两句话了:

image.png

求求你提问之前三思,不要浪费我们的时间,不要问那些你自己就能搞清楚的问题。

如果你认为我们遗漏了什么,或者有新的信息,请大声的说出来。

然后,你注意这里作者用的小标题是:The balancing act.

翻译过来是“平衡的行为”,啥玩意?

NO,NO,NO:

image.png

一个小俚语送给大家,不必客气。

image.png


补充说明


前面把主线剧情过完了,现在我来几个补充说明吧。

先说前面按下不表的关于日志的注解。

其实 Lombok 里面关于日志的注解还真是挺多的,可以直接看官方的文档:

https://projectlombok.org/features/log


image.png


这么多注解,一个个的讲也没啥意思,我这里就挑 @Slf4j 、@Log4j2 这两个演示一下吧。

首先,我们可以搞个纯净的 SpringBoot 项目,只包含这两个依赖:

image.png

这个时候如果我什么都不动,只是稍微改一下启动类:

image.png

然后为了排除干扰项我把日志打印的级别调整到 Error:

logging.level.root=error

同时关闭 banner 输出:

spring.main.banner-mode=off

banner 就是这个玩意:

image.png

可以看到我们这个时候使用的日志是 logback,原因我在之前的文章里面也讲过了,因为 Springboot 默认使用的日志实现是 logback。

这一点,从项目依赖上也可以看出来:

image.png

另外,你注意一下,我特意把 import 部分也截出来了,除了 @Slf4j 注解外,这里并没有引入任何日志相关的注解。

然后,我再关注一下这个时候编译出来的 class 文件:

image.png

自动引入了 slf4j 相关的包,然后生成了这行代码:

private static final Logger log = LoggerFactory.getLogger(LogdemoApplication.class);

这个时候不知道你有没有想到编译时注解相关的东西,但是不慌,这里还是先按下不表。

来,我问你:为什么它能引入 slf4j 相关的包?

因为我依赖了呀:

image.png

好,如果这个时候我把 logback 的核心依赖给拿掉,会出现什么事情,你觉得会不会编译不过呢?

不会编译不过,因为 Slf4j 包还在,它只是一个日志门面。

但是运行的时候会抛出异常,因为找不到日志相关的具体实现类:

image.png

然后,如果我想用 log4j2 日志实现怎么办呢?

之前的文章中也写过:

image.png


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
9月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2191 1
|
6月前
|
传感器 机器学习/深度学习 算法
布谷RC汽车远程遥控控制系统源码:技术与功能深度解析​
遥控汽车(RC汽车)以其趣味性和操控性深受爱好者喜爱,其核心在于精密的控制系统源码。山东布谷科技在该领域成果显著,通过优化主控芯片、电机驱动模块及通信模块代码,实现精准控制与稳定传输。系统支持PID算法等技术,提升车辆性能,并拓展智能避障、自动驾驶等功能。实际应用中,布谷科技源码助力竞技比赛与教育科研,未来将融入深度学习和多车协同控制,推动RC汽车向智能化、高效化发展。
|
小程序 Java 程序员
【规范】Apifox就应该这么玩
本文作者通过对比Postman与Apifox,分享了在项目中使用Apifox进行接口文档整理的方法,旨在帮助读者提升工作效率。文章详细介绍了Apifox目录整理策略、环境管理技巧及前置/后置操作的应用,使接口管理更加有序高效。无论是在短期开发还是长期迭代项目中,这些方法都能帮助开发者更好地管理和维护接口文档。
231 0
【规范】Apifox就应该这么玩
|
9月前
|
NoSQL Java API
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Spring Boot 集成 Redis
本文介绍了在Spring Boot中集成Redis的方法,包括依赖导入、Redis配置及常用API的使用。通过导入`spring-boot-starter-data-redis`依赖和配置`application.yml`文件,可轻松实现Redis集成。文中详细讲解了StringRedisTemplate的使用,适用于字符串操作,并结合FastJSON将实体类转换为JSON存储。还展示了Redis的string、hash和list类型的操作示例。最后总结了Redis在缓存和高并发场景中的应用价值,并提供课程源代码下载链接。
2127 0
搭建一个普通的网站需要多少费用?
用户如果需要搭建一个普通的网站大概需要多少钱?网站搭建费用一般分为域名、服务器/虚拟主机、网站制作、设计和维护费用。费用在1000-3000是比较常见的,建站主要以PageAdmin CMS系统为主。
1874 2
|
Python
【Python】已解决:(from docx import Document导包报错)ModuleNotFoundError: No module named ‘exceptions’
【Python】已解决:(from docx import Document导包报错)ModuleNotFoundError: No module named ‘exceptions’
1887 0
|
机器学习/深度学习 算法 Python
【Python 机器学习专栏】随机森林算法的性能与调优
【4月更文挑战第30天】随机森林是一种集成学习方法,通过构建多棵决策树并投票或平均预测结果,具有高准确性、抗过拟合、处理高维数据的能力。关键性能因素包括树的数量、深度、特征选择和样本大小。调优方法包括调整树的数量、深度,选择关键特征和参数优化。Python 示例展示了使用 GridSearchCV 进行调优。随机森林广泛应用于分类、回归和特征选择问题,是机器学习中的重要工具。
927 1
|
Linux
Linux上传下载百度网盘文件
Linux上传下载百度网盘文件
2140 1
|
数据采集 数据可视化 数据挖掘
【大数据实训】基于当当网图书信息的数据分析与可视化(八)
【大数据实训】基于当当网图书信息的数据分析与可视化(八)
452 0
|
机器学习/深度学习 人工智能 前端开发
极智AI | 谈谈昇腾auto tune
大家好,我是极智视界,本文介绍一下 谈谈昇腾 auto tune。
454 0