Spring文档明确提到spring只依赖于commons- docs。但是,如果我向Spring Data MongoDb添加一个依赖项,gradle就会添加一个对slf4j的依赖项。
org.springframework.data:spring-data-commons:1.5.1.RELEASE
+--- org.springframework:spring-core:3.1.4.RELEASE (*)
+--- org.springframework:spring-beans:3.1.4.RELEASE (*)
+--- org.slf4j:slf4j-api:1.7.1
\--- org.slf4j:jcl-over-slf4j:1.7.1这是否意味着如果我使用spring数据,我将被迫使用SLF4j?
发布于 2013-05-26 21:41:12
是的,我们有一个对Java的编译时依赖性,因为它是Slf4j事实上的标准日志API,并且是所有可用选项中引起最少麻烦的选项之一: JUL -我最好不要在这个选项上留下任何话(如果您仍然需要被说服,请参阅this one ),Commons运行时提供者检测具有proven a PITA。
我们还需要jcl-over-slf4j提供一个公共日志实现,以满足核心Spring框架的公共日志依赖,由于遗留原因,它必须维护这种依赖,但如果Slf4j在过去是可用的,那么它将拥有not been introduced in the first place。
所以,是的。我们正在设置激励措施来做“正确的事情”(tm),阅读:“Java社区普遍同意的方式”。如果你真的想坚持Commons日志记录,只需添加slf4j-jcl桥就可以了。如果您想要删除jcl-over-slf4j桥,只需排除依赖项。
发布于 2014-07-23 01:57:39
您可以通过添加到pom.xml来禁用Spring Data中的SLF4J日志记录:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring-data-jpa.version}</version>
<!-- Exclude slf4j logging in favor of log4j -->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons-logging.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>发布于 2013-05-26 05:31:37
SLF4J只是一个日志外观,在spring情况下,它将使用jcl-over-slf4j依赖关系委托给commons日志。
如果你想让你的应用使用commons-logging,你可以简单地排除slf4j依赖。
https://stackoverflow.com/questions/16753117
复制相似问题