-3

我们都知道,如果我们尝试通过 spring-mvc 将文档添加到 mongodb,spring 会添加 _class 来跟踪和促进文档的未来编组/解组。如果 in 成为一种开销,并且可能不想在 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 的方式。

4

1 回答 1

2

问题是:如何抑制spring框架添加到MongoDB对象以支持多态的_class条目。如果您不需要多态性支持,如果您将 POJO / 模型类重构为不同的包, _class 会浪费空间并引入问题。

上面的例子很接近,但有一些错误(例如 DefaultTypeMapper 应该是 DefaultMongoTypeMapper 并且 typeKey 是一个构造函数参数,而不是设置为属性)。

以下对我有用...

<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>
于 2012-05-30T16:02:08.353 回答