SpringBoot MongoDB多数据源配置

1)引入依赖

		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-mongodbartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-autoconfigureartifactId>
            <version>2.0.3.RELEASEversion>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-configuration-processorartifactId>
        dependency>

2)编写抽象配置类

public abstract class AbstractMongoConfig {

    private String host, database, username, password;
    private int port;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getDatabase() {
        return database;
    }

    public void setDatabase(String database) {
        this.database = database;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public MongoDbFactory mongoDbFactory() throws Exception {
        ServerAddress serverAddress = new ServerAddress(host, port);
        List<MongoCredential> mongoCredentialList = new ArrayList<>();
        mongoCredentialList.add(MongoCredential.createCredential(username, database, password.toCharArray()));
        return new SimpleMongoDbFactory(new MongoClient(serverAddress, mongoCredentialList), database);
    }

    abstract public MongoTemplate getMongoTemplate() throws Exception;
}

3)添加mongo配置

#mongodb配置
spring:
  data:
    mongodb:
      primary:
        host: 39.99.247.121
        port: 57088
        username: img_mongo
        password: img_mongo@2020
        database: img_mongo
      local:
        host: 39.101.190.227
        port: 57088
        username: img_mongo
        password: tl@2020
        database: img_mongo

4)添加对应的配置信息

@Configuration
@ConfigurationProperties(prefix = "spring.data.mongodb.primary")
public class PrimaryMongoConfig extends AbstractMongoConfig {

    @Primary
    @Override
    @Bean(name = "primaryMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
}
@Configuration
@ConfigurationProperties(prefix = "spring.data.mongodb.local")
public class LocalMongoConfig extends AbstractMongoConfig {

    @Override
    @Bean(name = "localMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
}

5)测试引入

	@Autowired
    @Qualifier(value = "primaryMongoTemplate")
    private MongoTemplate primaryTemplate;

    @Autowired
    @Qualifier(value = "localMongoTemplate")
    private MongoTemplate localTemplate;

你可能感兴趣的:(SpringBoot,mongodb,spring,boot)