2012-05-08 142 views
-3

我們都知道如果我們試圖通過spring-mvc向mongodb添加一個文檔,spring會添加_class來跟蹤&,以便將來對文檔進行編組/解組。在成爲開銷的情況下,有人可能不想在mongodb中包含_class。以下簡單的spring配置有助於避免在mongodb中添加_class。從mongodb文檔中刪除_class

<bean id="defaultTypeMapper" 
class="org.springframework.data.mongodb.core.convert.DefaultTypeMapper"> 
<property name="typeKey"><null/></property> 
</bean> 

<bean id="defaultMongoConverter" 
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter"> 
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> 
<constructor-arg name="mappingContext" ref="mappingContext" /> 
<property name="typeMapper" ref="defaultTypeMapper"></property> 
</bean> 

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> 
<constructor-arg name="mongoConverter" ref="defaultMongoConverter" /> 
<property name="writeResultChecking" value="EXCEPTION" /> 
</bean> 

可以輕鬆找到mongodbFactory和mappingContext的配置。所以我沒有在這裏添加它。請注意我包含typeKey的方式。

+3

這裏有什麼問題? –

+0

是的,你可以回答你自己的問題 - 但分開它們會更有幫助。你發佈的內容更多的是暗示,@inkriti。你會不會考慮將它作爲一個問題進行改寫,然後將解決方案放在單獨的答案中? – RubyTuesdayDONO

回答

2

現在的問題是:如何抑制spring framework添加到MongoDB對象以支持多態的_class條目。如果您不需要多態支持,_class會浪費空間並在您將POJO/model類重構爲不同的包時引入問題。

上面的例子很接近,但有一些錯誤(例如DefaultTypeMapper應該是DefaultMongoTypeMapper,而typeKey是一個構造函數arg,沒有設置爲屬性)。

下面的作品對我來說...

<mongo:mongo host="hostname" port="27017"> 
    <mongo:options 
     ...options... 
</mongo:mongo> 

<mongo:db-factory dbname="blee" username="blee" password="blee" mongo-ref="mongo"/> 

<bean id="mongoTypeMapper" class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper"> 
    <constructor-arg name="typeKey"><null/></constructor-arg> 
</bean> 

<bean id="mongoMappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" /> 

<bean id="mongoConverter" class="org.springframework.data.mongodb.core.convert.MappingMongoConverter"> 
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> 
    <constructor-arg name="mappingContext" ref="mongoMappingContext" /> 
    <property name="typeMapper" ref="mongoTypeMapper"></property> 
</bean> 

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/> 
    <constructor-arg name="mongoConverter" ref="mongoConverter" /> 
    <property name="writeResultChecking" value="EXCEPTION" /> 
</bean> 
+0

我上面發佈的代碼也適用於我。最初我嘗試使用上面發佈的配置,但是Spring在包中找不到DefaultMongoTypeMapper。因此我不得不改變配置。我正在使用spring-data-mongodb-1.0.0.M4.jar。 – inkriti