【mongo】SpringBoot连接Mongo数据库
方法1:配置文件application.yml
//如下写法会自动连接mongo,首先匹配环境变量中的值,如无法连接则再匹配第一个":"后的配置
spring:
data:
mongodb:
uri: ${SMART_ADMIN_MONGO_INTERNAL:mongodb://admin:admin@localhost:27017/firstMongo}
方法2:配置类
具体连接信息:
#本地
mongo:
host: localhost
port: 27017
username: admin
password: admin
database: firstMongo
配置类:
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
@Configuration
@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
@ComponentScan
@EnableMongoRepositories
public class MongoDataSourceConfig extends AbstractMongoConfiguration {
@Value("${mongo.database}")
private String dbname;
@Value("${mongo.host}")
private String dbhost;
@Value("${mongo.port}")
private String dbport;
@Value("${mongo.username}")
private String username;
@Value("${mongo.password}")
private String password;
public MongoDataSourceConfig() {
if (null == dbport || "".equalsIgnoreCase(dbport.trim())) {
dbport = "27017";
}
}
@Override
@Bean(name = "mongoClient")
public MongoClient mongoClient() {
ServerAddress serverAddress = new ServerAddress(dbhost, Integer.parseInt(dbport));
MongoCredential credential = MongoCredential.createCredential(username, dbname, password.toCharArray());
MongoClient mongoClient = new MongoClient(serverAddress, Arrays.asList(credential));
return mongoClient;
}
@Override
protected String getDatabaseName() {
return this.dbname;
}
}