Я пишу пользовательские конвертеры для фильтрации и сохранения моего объекта в mongodb с использованием Spring Data Mongo API. Я пытаюсь внедрить bean-компонент MongoTemplate в мой класс Converter, чтобы я мог получить некоторые основные данные из базы данных.
Я могу получить bean-компонент MongoTemplate внутри метода getSequenceByName в виде отложенной загрузки bean-компонента, но в этом случае я всегда получаю bean-компонент для каждого создания последовательности (я сохраняю большой файл BSON и для каждого узла добавляю одну последовательность как u уникальный ключ).
<mongo:mapping-converter id="mongoConverter">
<mongo:custom-converters base-package="com.gxs.activefoundation.valueobject">
<mongo:converter ref="documentWriteConverter"/>
</mongo:custom-converters>
</mongo:mapping-converter>
<bean id="documentWriteConverter" class="com.gxs.activefoundation.mongo.converters.RuntimeDocumentWriteConverter">
<property name="mongoSequenceDao" ref="mongoSequenceDao"/>
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoConverter" ref="mongoConverter" />
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>
<bean id="mongoTemplateDao" class="com.gxs.activefoundation.dao.impl.MongoTemplateDaoImpl">
<property name="mongoOperation" ref="mongoTemplate"/>
</bean>
<bean id="mongoSequenceDao" class="com.gxs.activefoundation.dao.impl.MongoSequenceDaoImpl">
<property name="mongoTemplateDao" ref="mongoTemplateDao"/>
</bean>
@WritingConverter
public class RuntimeDocumentWriteConverter implements Converter<RuntimeDocument, DBObject> {
private MongoSequenceDao mongoSequenceDao;
public MongoSequenceDao getMongoSequenceDao() {
return mongoSequenceDao;
}
public void setMongoSequenceDao(MongoSequenceDao mongoSequenceDao) {
this.mongoSequenceDao = mongoSequenceDao;
}
@Override
public DBObject convert(RuntimeDocument runtimeDocument) {
DBObject dbObject = new BasicDBObject();
getMongoSequenceDao().getSequenceByName("_zone")
return dbObject;
}
}
public class MongoSequenceDaoImpl implements MongoSequenceDao {
private MongoTemplateDao mongoTemplateDao;
public MongoTemplateDao getMongoTemplateDao() {
return mongoTemplateDao;
}
public void setMongoTemplateDao(MongoTemplateDao mongoTemplateDao) {
this.mongoTemplateDao = mongoTemplateDao;
}
@Override
public Long getSequenceByName(String sequenceName) {
//get sequence id
}
}
Как я могу выполнить операцию DB READ внутри класса конвертера. Или мне нужно создать несколько bean-компонентов MongoTemplate и использовать их в классе конвертера? Пожалуйста, предложите, есть ли лучший способ, которым я могу достичь этого. Спасибо за вашу помощь.