Created
August 16, 2023 01:34
-
-
Save robsonkades/9452f3023e244c42618d3160b6b9e1ef to your computer and use it in GitHub Desktop.
Mongo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class DynamicMongoClientFactory { | |
public DynamicMongoClientFactory() {} | |
public MongoClient createMongoClient(String uri) { | |
StandardMongoClientSettingsBuilderCustomizer standardMongoClientSettingsBuilderCustomizer = new StandardMongoClientSettingsBuilderCustomizer(new ConnectionString(uri), UuidRepresentation.JAVA_LEGACY, new MongoProperties.Ssl(), new DefaultSslBundleRegistry()); | |
MongoClientSettings mongoClientSettings = MongoClientSettings | |
.builder() | |
.applicationName("user") | |
.applyConnectionString(new ConnectionString(uri)).build(); | |
return new MongoClientFactory(List.of(standardMongoClientSettingsBuilderCustomizer)).createMongoClient(mongoClientSettings); | |
} | |
} | |
------------------- | |
@Configuration | |
public class MongoConfig { | |
@Bean | |
public DynamicMongoClientFactory dynamicMongoClientFactory() { | |
return new DynamicMongoClientFactory(); | |
} | |
@Bean | |
public MongoClient mongoClient(DynamicMongoClientFactory dynamicMongoClientFactory) { | |
// MongoClientSettings.builder().build(); | |
return dynamicMongoClientFactory.createMongoClient(" URL "); | |
} | |
@Bean | |
public RoutingMongoDatabaseFactory mongoDatabaseFactory(MongoClient mongoClient) { | |
return new RoutingMongoDatabaseFactory(mongoClient, "defaultDatabase"); | |
} | |
@Bean | |
public MongoTemplate mongoTemplate(RoutingMongoDatabaseFactory routingMongoDatabaseFactory) { | |
return new MongoTemplate(routingMongoDatabaseFactory); | |
} | |
} | |
------------------------ | |
public class RoutingMongoDatabaseFactory extends SimpleMongoClientDatabaseFactory { | |
private final String databaseName; | |
Map<String, MongoClient> stringMongoClientMap = new ConcurrentHashMap<>(); | |
private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); | |
public RoutingMongoDatabaseFactory(MongoClient mongoClient, String databaseName) { | |
super(mongoClient, databaseName); | |
this.databaseName = databaseName; | |
stringMongoClientMap.put("abdocs", mongoClient); | |
} | |
@Override | |
protected MongoClient getMongoClient() { | |
MongoClient x = stringMongoClientMap.get("X"); | |
if (x == null) { | |
MongoClient mongoClient = MongoClients.create(MongoContextHolder.getMongoDbInfo()); | |
stringMongoClientMap.put("X", mongoClient); | |
return mongoClient; | |
} | |
return x; | |
} | |
@Override | |
protected String getDefaultDatabaseName() { | |
return databaseName; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment