miduo_gm/src/main/java/com/jmfy/utils/Connect.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;
}
}