2013-05-25 7 views
5

Springのドキュメントでは、SpringはCommons-Loggingにのみ依存することが明示されています。 しかし、Spring Data MongoDbに依存関係を追加すると、gradleはslf4jへの依存関係を追加します。Spring Dataは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 

これは、私がスプリングデータを使用する場合、SLF4jを強制的に使用することを意味しますか?

答えて

2

SLF4Jは、春のケースでは、jcl-over-slf4j依存関係を使用してコモンログに委任する唯一のLogging Facadeです。

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

2

はい、Slf4j APIのコンパイル時の依存関係は、事実上の標準的なJava用のログAPIであり、利用可能なすべてのオプションを最小限に抑えるためです。 (まだ確信が必要な場合はthis oneを参照)、Commons Logging - ランタイムプロバイダの検出にはproven a PITAがあります。

さらに、jcl-over-slf4jは、SpringフレームワークのCommons Logging依存性を満たすためのCommons Logging実装を提供する必要があります。これは、従来の理由から維持する必要がある依存性ですが、Slf4jを利用できる場合はnot been introduced in the first placeあの日々。

だから、そうです。私たちは、「正しいこと」(tm)を行うためのインセンティブを設定しています。「Javaコミュニティが広く同意した方法」 Commons Loggingに固執したいのであれば、単にslf4j-jclブリッジを追加するだけです。 jcl-over-slf4jブリッジを削除する場合は、単に依存関係を除外します。

+1

問題は、そのドキュメントが現実と一致doesntの事実で、SLF4Jそれ自体ではありません。ドキュメンテーションによれば、SpringはCommons-Loggingを使用しており、そうでない場合には更新する必要があるという。 – pdeva

+0

あなたはその質問には言及していません:)。誤解を招くような情報を見つけた場所へのリンクを共有して修正できるように気をつけてください。 –

+0

http://static.springsource.org/spring/docs/current/spring-framework-reference/html/overview.html#overview-logging – pdeva

2

あなたはのpom.xmlに追加することによって、春データに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> 
関連する問題