日志平台要连接多个mongo库做日志统一查询,使用springboot的多Template模式不能做到动态切换,所以这里做一个动态模板实现自动切换。
DynamicMongoTemplate继承 MongoTemplate重写doGetDatabase方法,这个方法是protected修饰的,一看就知道是提供给咱们重写的。
import com.mongodb.client.MongoDatabase;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
/**
* @author DAI
* @date 2020/5/30 12:51
* @Description 动态mongo模板
*/
public class DynamicMongoTemplate extends MongoTemplate {
public DynamicMongoTemplate(MongoDbFactory mongoDbFactory) {
super(mongoDbFactory);
}
@Override
protected MongoDatabase doGetDatabase() {
MongoDbFactory mongoDbFactory = MongoContext.getMongoDbFactory();
return mongoDbFactory == null ? super.doGetDatabase() : mongoDbFactory.getDb();
}
}
注册DynamicMongoTemplate替换springboot自动配置的MongoTemplate