5

Spring のドキュメントでは、Spring は commons-logging のみに依存していると明示的に言及しています。しかし、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 を使用する必要があるということですか?

4

3 に答える 3

3

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>
于 2014-07-22T17:57:39.340 に答える
3

はい、Slf4j API にはコンパイル時の依存関係があります。Slf4j API は Java の事実上の標準のログ API であり、利用可能なすべてのオプションの中で最も手間がかからない API です: JUL - これについては一言も残さないでください (それでも納得する必要がある場合は、これを参照してください)、Commons Logging - ランタイム プロバイダーの検出により、PITA が証明されました

さらに、コア Spring フレームワークの Commons Logging 依存関係を満たすために、jcl-over-slf4j が Commons Logging 実装を提供する必要があります。この依存関係は、レガシーの理由で維持する必要がありますが、Slf4j が利用可能であった場合、そもそも導入されなかったでしょう。過去に戻って。

あ、はい。「正しいこと」 (tm) を行うためのインセンティブを設定しています。「Java コミュニティ全体が同意した方法」を参照してください。本当に Commons Logging に固執したい場合は、slf4j-jcl ブリッジを追加するだけで準備完了です。jcl-over-slf4j ブリッジを削除したい場合は、単純に依存関係を除外してください。

于 2013-05-26T13:41:12.177 に答える
2

SLF4Jは、Springの場合、jcl-over-slf4j 依存関係を使用してコモンズ ロギングで委任するロギング ファサードにすぎません。

アプリで commons-logging を使用する場合は、単純に slf4j の依存関係を除外できます。

于 2013-05-25T21:31:37.057 に答える