2012-01-20 27 views
1

這是我的配置:將mongo自定義轉換器分割成多個上下文文件?

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

是否有可能從該1個彈簧上下文文件分割:

<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> 

成2個彈簧上下文文件(在不同的行家模塊)等這些下面?

文件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> 

文件2-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> 

是否有對蒙戈轉換器 '合併' 任何有用的屬性?

回答

4

custom-converters元素實際上也具有base-package屬性,這將觸發所列出的包將被掃描以執行ConverterGenericConverter實現。您在mapping-converter級別使用的是啓動時拾取域類。所以你應該沒問題,只需刪除顯式定義的轉換器bean並添加額外的屬性即可。

<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

'映射轉換器'上的'base-package'掃描配置包的'@Document'註釋類,以避免映射元數據在'MappingContext'的第一次查找時被掃描。是的,類路徑掃描支持通配符。我更新了https://jira.springsource.org/browse/DATAMONGO-384以相應地更新參考文檔。 –

0

我也滿足了同樣的問題,如果配置爲:

<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="com.abc.*.entities"> 
    <mongo:custom-converters base-package="com.abc.converter.mongo" /> 
</mongo:mapping-converter> 

轉換器不適用。 pagckage com.abc。*。entities具有@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> 

將註冊所有的轉換器。這似乎沒有道理,如果正確實施,維護者建議會更好。

相關問題