我们都知道,如果我们尝试通过spring-mvc向mongodb添加文档,spring会将_class添加到track&便于将来对文件进行编组/解组。如果成为开销,可能不希望在mongodb中包含_class。以下简单的spring配置有助于避免在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的方式。
答案 0 :(得分:2)
问题是:如何抑制spring框架添加到MongoDB对象以支持多态的_class条目。如果您不需要多态支持,_class会浪费空间并在您将POJO /模型类重构为不同的包时引入问题。
上面的示例很接近,但有一些错误(例如,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>