栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Mongo】spring-data-mongodb3.1.3配置多数据源

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Mongo】spring-data-mongodb3.1.3配置多数据源

1.项目框架介绍:springboot集成spring-data-mongodb3.1.3 (内嵌mongo-driver-core4.1.1)

2.配置文件:application.yml

mongodb:
  primary:
    host: 192.168.1.1
    port: 27017
    database: database1
    username: ceshi1
    password: ceshi12345
  secondary:
    host: 192.168.1.2
    port: 27017
    database: database2
    username: cheshi2
    password: cheshi234567

3.引入pom包

        
            org.springframework.boot
            spring-boot-starter-data-mongodb
        
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        

4.代码

MultipleMongoProperties.java
@Component
@Data
@ConfigurationProperties(prefix = "mongodb")
public class MultipleMongoProperties {

    private MongoProperties primary = new MongoProperties();
    private MongoProperties secondary = new MongoProperties();
}
MultipleMongoConfig.java
@Configuration
public class MultipleMongoConfig {

    @Autowired
    private MultipleMongoProperties mongoProperties;

    @Primary
    @Bean(name = PrimaryMongoConfig.MONGO_TEMPLATE)
    public MongoTemplate primaryMongoTemplate() throws Exception {
        return new MongoTemplate(primaryFactory(this.mongoProperties.getPrimary()));
    }

    @Bean
    @Qualifier(SecondaryMongoConfig.MONGO_TEMPLATE)
    public MongoTemplate secondaryMongoTemplate() throws Exception {
        return new MongoTemplate(secondaryFactory(this.mongoProperties.getSecondary()));
    }

    @Bean
    @Primary
    public MongoDatabaseFactory primaryFactory(MongoProperties mongo) {
        List serverAddressList = new ArrayList<>();
        String[] hosts = mongo.getHost().split(",");
        for(String host:hosts){
            serverAddressList.add(new ServerAddress(host, Integer.valueOf(mongo.getPort())));
        }

        // 连接认证,如果设置了用户名和密码的话
        MongoClientSettings settings = null;
        ConnectionPoolSettings poolSetting=ConnectionPoolSettings.builder().
                maxWaitTime(1500, TimeUnit.MILLISECONDS).build();
        if(StringUtils.isNotBlank(mongo.getUsername())) {
            MongoCredential credential = MongoCredential.createScramSha1Credential(mongo.getUsername(),
                    "admin", mongo.getPassword());
            settings = MongoClientSettings.builder()
                    .credential(credential)
                    .applyToConnectionPoolSettings(builder->builder.applySettings(poolSetting))
                    .applyToClusterSettings(builder -> builder.hosts(serverAddressList)).build();
        }else {
            settings = MongoClientSettings.builder().applyToConnectionPoolSettings(builder->builder.applySettings(poolSetting))
                    .applyToClusterSettings(builder -> builder.hosts(serverAddressList)).build();
        }

        MongoClient mongoClient = MongoClients.create(settings);

        // 创建MongoDbFactory
        SimpleMongoClientDbFactory factory = new SimpleMongoClientDbFactory(mongoClient,
                mongo.getDatabase());


        return factory;
    }

    @Bean
    public MongoDatabaseFactory secondaryFactory(MongoProperties mongo) {
        List serverAddressList = new ArrayList<>();
        String[] hosts = mongo.getHost().split(",");
        for(String host:hosts){
            serverAddressList.add(new ServerAddress(host, Integer.valueOf(mongo.getPort())));
        }
        // 连接认证,如果设置了用户名和密码的话
        MongoClientSettings settings = null;
        ConnectionPoolSettings poolSetting=ConnectionPoolSettings.builder().
                maxWaitTime(1500, TimeUnit.MILLISECONDS).build();
        if(StringUtils.isNotBlank(mongo.getUsername())) {
            MongoCredential credential = MongoCredential.createScramSha1Credential(mongo.getUsername(),
                    "admin", mongo.getPassword());
            settings = MongoClientSettings.builder()
                    .credential(credential)
                    .applyToConnectionPoolSettings(builder->builder.applySettings(poolSetting))
                    .applyToClusterSettings(builder -> builder.hosts(serverAddressList)).build();
        }else {
            settings = MongoClientSettings.builder().applyToConnectionPoolSettings(builder->builder.applySettings(poolSetting))
                    .applyToClusterSettings(builder -> builder.hosts(serverAddressList)).build();
        }

        MongoClient mongoClient = MongoClients.create(settings);
        // 创建MongoDbFactory
        SimpleMongoClientDbFactory factory = new SimpleMongoClientDbFactory(mongoClient,
                mongo.getDatabase());


        return factory;
    }

}

4.调用

@Resource(name="primaryMongoTemplate")
private MongoTemplate primaryMongoTemplate;


@Resource(name="secondaryMongoTemplate")
private MongoTemplate secondaryMongoTemplate;



datas = (List>) this.primaryMongoTemplate.find(query, entityClass);
long count =  this.secondaryMongoTemplate.count(query, entityClass);

附:代码下载地址:mongoconfig.zip-Java文档类资源-CSDN下载spring-data-mongodb3.1.3配置多数据源更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/xiaren_1988/39624250

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号