2012-01-20 7 views
1

これは私の設定です:以下これらのような(異なるMavenのモジュールで)2つの春のコンテキストファイルにmongoカスタムコンバータを複数のコンテキストファイルに分割しますか?

<mongo:mapping-converter base-package="my.package.converter"> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="my.package.converter.ClassAbcReadConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.ClassAbcWriteConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.subpackage.ClassDefReadConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.subpackage.ClassDefWriteConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.subpackage.ClassGhiWriteConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.subpackage.ClassGhiReadConverter" /> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 

<org.springframework.version>3.1.0.RELEASE</org.springframework.version> 
    <spring.data.mongo.version>1.0.0.RC1</spring.data.mongo.version> 

この1つの春のコンテキストファイルから分割することが可能ですか?

ファイル1-のcontext.xml

<mongo:mapping-converter base-package="my.package.converter"> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="my.package.converter.ClassAbcReadConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.ClassAbcWriteConverter" /> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 

FILE2-のcontext.xml

<mongo:mapping-converter base-package="my.package.converter"> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="my.package.converter.subpackage.ClassDefReadConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.subpackage.ClassDefWriteConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.subpackage.ClassGhiWriteConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converter.subpackage.ClassGhiReadConverter" /> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 

Mongoのコンバータに 'マージ' のいずれかの有用な属性がありますか?

答えて

4

要素は、実際にbase-package属性も持ち、リストされたパッケージがConverterGenericConverterの実装でスキャンされるようにします。 mapping-converterレベルで使用していたレベルは、起動時にドメインクラスを取得することです。したがって、明示的に定義されたコンバータBeanを削除し、追加の属性を追加するだけで問題ありません。それが正常に動作し

<mongo:mapping-converter> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="com.abc.converter.mongo.DBObjectToDateTime" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="com.abc.converter.mongo.DateTimeToDBObject" /> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 

:として設定する場合、私はまた、同じ問題を満たす

<mongo:mapping-converter base-package="my.package.entities"> 
    <mongo:custom-converters base-package="my.package.converters" /> 
</mongo:mapping-converter> 
+0

ヒントをありがとう! 「起動時のドメイン取得クラス」に関するドキュメントを指摘できますか?その声明についてもっと理解したいと思います。私は "my.package。*。converters"が動作するかどうかも興味があります。 – bertie

+1

'mapping-converter'の' base-package'は '@ Document'で注釈が付けられたクラスの設定済みのパッケージをスキャンして、' MappingContext'の最初の検索時に検索されるマッピングメタデータを避けます。はい、クラスパススキャンはワイルドカードをサポートしています。私はhttps://jira.springsource.org/browse/DATAMONGO-384を更新して、それに従って参照文書を更新しました。 –

0

。 と設定する場合:

<mongo:mapping-converter base-package="com.abc.*.entities"> 
    <mongo:custom-converters base-package="com.abc.converter.mongo" /> 
</mongo:mapping-converter> 

コンバータは適用されません。 pagckage com.abc。*。エンティティには@Document注釈付きクラスと@Entity注釈付きクラスがあります。

0
<mongo:mapping-converter base-package="my.package.entities"> 
    <mongo:custom-converters base-package="my.package.converters" /> 
</mongo:mapping-converter> 

1.1.0.RELEASEでは動作しません。 XSDファイルを見れば、mongo:mapping-converterとconverterだけがbase-packageを定義します。だからあなたはまだこれを行う必要があります。

<mongo:mapping-converter base-package="my.package.entities"> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="my.package.converters.DBObjectToDateTime" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="my.package.converters.DateTimeToDBObject" /> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 

場合、私は試していない:

<mongo:mapping-converter base-package="my.package.entities"> 
    <mongo:custom-converters> 
     <mongo:converter base-package="my.package.converters.DBObjectToDateTime" /> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 

は、すべてのコンバータを登録します。それは意味をなさないと思われ、メンテナの提案は正しく実装されている方が良いでしょう。

関連する問題