diff --git a/.gitignore b/.gitignore index 3bcc6cf..9e5fa4d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,9 @@ .DS_Store .idea /target -*.iml \ No newline at end of file +*.iml +.vscode +.settings +.classpath +.factorypath +.project \ No newline at end of file diff --git a/README.md b/README.md index fd81497..98f7650 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ -Multiple Mongo Connectors ---- +# Multiple Mongo Connectors + Sample application to connect to multiple `MongoDB` from spring-boot. http://blog.marcosbarbero.com/multiple-mongodb-connectors-in-spring-boot/ + +## Addition + +* Updated whole project from Spring-Boot 1.5.x to 2.2.x. +* Therefore the whole MongoDB factory class has changed. +* Added Credentials for MongoDB diff --git a/pom.xml b/pom.xml index 2f79f75..4b33850 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.5.10.RELEASE + 2.2.1.RELEASE @@ -22,7 +22,7 @@ UTF-8 UTF-8 - 1.8 + 11 diff --git a/src/main/java/com/marcosbarbero/wd/multiplemongo/Application.java b/src/main/java/com/marcosbarbero/wd/multiplemongo/Application.java index cdeb74e..eadb1ac 100644 --- a/src/main/java/com/marcosbarbero/wd/multiplemongo/Application.java +++ b/src/main/java/com/marcosbarbero/wd/multiplemongo/Application.java @@ -9,6 +9,7 @@ import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.mongodb.config.EnableMongoAuditing; import java.util.List; @@ -16,6 +17,7 @@ @Slf4j @SpringBootApplication +@EnableMongoAuditing public class Application implements CommandLineRunner { @Autowired diff --git a/src/main/java/com/marcosbarbero/wd/multiplemongo/config/MultipleMongoConfig.java b/src/main/java/com/marcosbarbero/wd/multiplemongo/config/MultipleMongoConfig.java index 3a38629..f5b5fc0 100644 --- a/src/main/java/com/marcosbarbero/wd/multiplemongo/config/MultipleMongoConfig.java +++ b/src/main/java/com/marcosbarbero/wd/multiplemongo/config/MultipleMongoConfig.java @@ -1,6 +1,6 @@ package com.marcosbarbero.wd.multiplemongo.config; -import com.mongodb.MongoClient; +import com.mongodb.ConnectionString; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.mongo.MongoProperties; @@ -10,13 +10,15 @@ import org.springframework.context.annotation.Primary; 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.SimpleMongoClientDbFactory; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; /** * @author Marcos Barbero */ +@Slf4j @Configuration @RequiredArgsConstructor @EnableConfigurationProperties(MultipleMongoProperties.class) @@ -38,14 +40,29 @@ public MongoTemplate secondaryMongoTemplate() throws Exception { @Bean @Primary public MongoDbFactory primaryFactory(final MongoProperties mongo) throws Exception { - return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()), - mongo.getDatabase()); + ConnectionString conn = new ConnectionString(buildConnectionString(mongo)); + return new SimpleMongoClientDbFactory(conn); } @Bean public MongoDbFactory secondaryFactory(final MongoProperties mongo) throws Exception { - return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()), - mongo.getDatabase()); + ConnectionString conn = new ConnectionString(buildConnectionString(mongo)); + return new SimpleMongoClientDbFactory(conn); + } + + /** + * Builds connectionString with credentials + * + * @param mongo + * @return String with the connection information + */ + private String buildConnectionString(MongoProperties mongo) { + String prefex = "mongodb://"; + String con = new StringBuffer(prefex).append(mongo.getUsername()).append(":").append(mongo.getPassword()) + .append("@").append(mongo.getHost()).append(":").append(mongo.getPort()).append("/") + .append(mongo.getDatabase()).toString(); + log.debug("connection String: " + con); + return con; } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 0286df7..0e7e76a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,11 +2,15 @@ mongodb: primary: host: localhost port: 27017 - database: second + database: first + username: apifirst + password: pa55w0rd secondary: host: localhost port: 27017 database: second + username: apisecond + password: pa55w0rd spring: autoconfigure: