generated from root/miduo_server
59 lines
2.5 KiB
Java
59 lines
2.5 KiB
Java
package com.jmfy.utils;
|
|
|
|
import com.mongodb.MongoClient;
|
|
import com.mongodb.MongoClientURI;
|
|
import com.mongodb.client.MongoIterable;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.data.mongodb.MongoDbFactory;
|
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
|
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
|
|
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
|
|
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
|
|
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
|
|
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
|
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import javax.annotation.PostConstruct;
|
|
import java.util.Map;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
/**
|
|
* @author Administrator
|
|
*/
|
|
@Component
|
|
public class Connect {
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(Connect.class);
|
|
@Value("${spring.data.gameMongodb.uri}")
|
|
private String oldMongoClient;
|
|
private Map<String, MongoTemplate> oldMongomaps = new ConcurrentHashMap<>();
|
|
@PostConstruct
|
|
public void init() {
|
|
MongoClient mongoClient = new MongoClient(new MongoClientURI(oldMongoClient));
|
|
MongoIterable<String> databaseNames = mongoClient.listDatabaseNames();
|
|
for (String dbName : databaseNames) {
|
|
LOGGER.info("gameMongodb-->dbName={}", dbName);
|
|
MongoDbFactory mongoDbFactory = (new SimpleMongoDbFactory(mongoClient, dbName));
|
|
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory, mappingMongoConverter(mongoDbFactory));
|
|
oldMongomaps.put(dbName, mongoTemplate);
|
|
}
|
|
}
|
|
|
|
public MongoTemplate getMongoTemplete(String dbName) throws Exception {
|
|
if (!oldMongomaps.containsKey(dbName)) {
|
|
throw new Exception(dbName + " does not exist");
|
|
}
|
|
MongoTemplate mongoTemplate = oldMongomaps.get(dbName);
|
|
return mongoTemplate;
|
|
}
|
|
public MappingMongoConverter mappingMongoConverter( MongoDbFactory mongoDbFactory) {
|
|
DefaultDbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);
|
|
MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, new MongoMappingContext());
|
|
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
|
|
return converter;
|
|
}
|
|
|
|
}
|