spring6源码阅读(三):spring-core解析: 日志门面与自由选择与更迭

关于jcl的使用与淘汰

在上一篇中对于spring-core下log包进行阅读了,发觉spring对默认使用的日志门面是commons-loging,而jdk使用的jcl的日志门面,除此之外还有常见的slf4j日志门面。

那么这些日志门面是如何共同作用的呢?

答: Spring Framework 5.0 -6之后,spring使用了一个索引日志门面的包,他享有和commons-loging一样包名,由此来避免对以往项目代码的重构,但实际链接到的却是有spring实现的org.springframework:spring-jcl,只是该模块会在同时检测是否存在其他日志门面。

ps: 时间坐标2025.9.18,是spring源码仓库中的main分支代表即将发布的7,并且jcl即将退役。

spring7发行说明

官文翻译如下
Spring JCL 已被弃用
spring-jcl 模块已被移除,取而代之的是 Apache Commons Logging 1.3.0。对大多数应用程序来说,这一改变应该是透明的,因为 spring-jcl 是一个传递性依赖,而且日志记录 API 的调用不会发生变化。更多详情请参见 #32459

观看isuser的讨论得出结论,并非不存在更好选择,部分提出用 Log4j API,但是由于历史遗留问题,最终仍然选择Commons Logging 1.3,但是最主要的功能原因还是由于Commons Logging 1.3.0 提供开箱即用的 SLF4J 和 Log4j API 支持

结论

spring5.0之前,单纯使用commons-loging,5.0-6.x(包含目前最新的GA版本6.2.x)使用jcl,但是在spring官方源码仓库当中的main分支,已经淘汰了spring-jcl,逐步尝试更换。

posted @ 2025-09-18 15:47  wenzhuo4657  阅读(5)  评论(0)    收藏  举报