如我所言,我将回答我的问题。要使其正常工作,您需要在应用程序上下文XML文件中对 mongoTemplate bean进行以下设置:
<mongo:db-factory dbname="${myDatabaseName.from.properties.file}" mongo-ref="mongo"/><bean id="mongoMappingContext" /> <bean id="mappingMongoConverter" c:mongoDbFactory-ref="mongoDbFactory" c:mappingContext-ref="mongoMappingContext"/><bean id="mongoTemplate" c:mongoDbFactory-ref="mongoDbFactory" c:mongoConverter-ref="mappingMongoConverter"/>并使用上面的设置和我在问题中建议的解决方案。您可以使用相同的域对象,并根据您选择的设置将其存储到多个集合中。
编辑:
由于有人在相关问题中提出了要求,因此我还将在这里更新ThreadLocal上下文的逻辑:
创建一个 RequestLocalContext 类,该类包装以下实现:
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);}其中 LocalContextKeys 是一个枚举,其中包含 ThreadLocal 上下文 映射中
允许的键。请注意,这些键是用户定义的,因此可以随意将其放置在其中。



