什么是Java编译时绑定,它如何工作?

编译时绑定在Java中是如何工作的,这是什么意思?

绑定还有哪些其他类型,以及它们如何工作?

如果我在编译时在pom中提供例如slf4j-api-1.7.28.jar,但在运行时不提供它,而在运行时提供slf4j-jcl-1.7.28.jar,会发生什么呢?

在编译时如何连接有关首选实现的信息?

在其他日志记录框架(如jakarta通用日志记录,log4j,java util日志记录)中如何解决?

阅读slf4j文档时遇到上述问题。

SLF4J binding states:

SLF4J不依赖任何特殊类的装载机。实际上,每个SLF4J绑定在编译时都进行了硬连线,以使用一个且仅一个特定的日志记录框架。例如,slf4j-log4j12-1.7.28.jar绑定在编译时绑定为使用log4j。

Similarly LoggerFactorygetILoggerFactory()

返回正在使用的ILoggerFactory实例。      ILoggerFactory实例在编译时与此类绑定。