如我所言,我将回答我的问题。要使其正常工作,您需要在应用程序上下文XML文件中对 bean进行以下设置:
<mongo:db-factory dbname="${myDatabaseName.from.properties.file}" mongo-ref="mongo"/>
<bean id="mongoMappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext"/>
<bean id="mappingMongoConverter" class="org.springframework.data.mongodb.core.convert.MappingMongoConverter" c:mongoDbFactory-ref="mongoDbFactory"
c:mappingContext-ref="mongoMappingContext"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"
c:mongoDbFactory-ref="mongoDbFactory" c:mongoConverter-ref="mappingMongoConverter"/>
并使用上面的设置和我在问题中建议的解决方案。您可以使用相同的域对象,并根据您选择的设置将其存储到多个集合中。
由于有人在相关问题中提出了要求,因此我还将在这里更新ThreadLocal上下文的逻辑:
创建一个 类,该类包装以下实现:
private static final ThreadLocal<Map> CONTEXT = new ThreadLocal<Map>() {
protected Map initialValue() {
Map localMap = new HashMap();
localMap.put(LocalContextKeys.CONVERSATION_CONTEXT, new HashMap());
return localMap;
};
};
public static void putInLocalContext(Object key, Object value) {
Map localMap = CONTEXT.get();
localMap.put(key, value);
}
public static Object getFromLocalContext(Object key) {
Map localMap = CONTEXT.get();
return localMap.get(key);
}