-3

spring-mvc を介してドキュメントを mongodb に追加しようとしているかどうかは誰もが知っています。Spring は _class を追加して、ドキュメントの将来のマーシャリング/アンマーシャリングを追跡および容易にします。オーバーヘッドになり、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 を含めた方法に注意してください。

4

1 に答える 1

2

問題は、Spring フレームワークが MongoDB オブジェクトに追加してポリモーフィズムをサポートする _class エントリを抑制する方法です。ポリモーフィズムのサポートが必要ない場合、_class はスペースを浪費し、POJO / モデル クラスを別のパッケージにリファクタリングすると問題が発生します。

上記の例は近いものでしたが、いくつかのエラーがあります (たとえば、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 に答える