I am using spring boot web application which connects to mongo db which is working out of the box. I just use the following properties:
spring.data.mongodb.h
The question was specifically for Spring boot. I am using the following approach which works well, please suggest if there is a way not to use new and use Spring for configuring it.
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
@Configuration
@EnableMongoRepositories("com.myapp.repository")
public class SpringMongoConfig extends AbstractMongoConfiguration {
@Value("${myapp.mongodb.host}")
private String host;
@Value("${myapp.mongodb.port}")
private int port;
@Value("${myapp.mongodb.database}")
private String mongoDB;
@Value("${myapp.mongodb.userName}")
private String userName;
@Value("${myapp.mongodb.password}")
private String password;
@Value("${myapp.mongodb.socketTimeoutMS}")
private int socketTimeout;
@Value("${myapp.mongodb.connectionTimeoutMS}")
private int connectionTimeout;
@Override
public MongoMappingContext mongoMappingContext() throws ClassNotFoundException {
return super.mongoMappingContext();
}
@Override
@Bean
public Mongo mongo() throws Exception {
List servers = new ArrayList();
servers.add(new ServerAddress(host, port));
List creds = new ArrayList();
creds.add(MongoCredential.createCredential(userName, mongoDB, password.toCharArray()));
MongoClientOptions builder = MongoClientOptions.builder().socketTimeout(socketTimeout).connectTimeout(connectionTimeout).build();
return new MongoClient(servers, creds, builder);
}
@Override
protected String getDatabaseName() {
return mongoDB;
}
}