SpringBoot 配置多個MongoTemplate

前言:

Spring Boot支持應用程序中建立多個Mongo模板鏈接到兩個不一樣的mongo服務器。java

建立多個Mongo鏈接mongodb

application.properties/yml服務器

properties:
primary.mongodb.host=<primary_mongodb_host>
primary.mongodb.port=<primary_mongodb_port>
primary.mongodb.database=<primary_mongodb_database>


secondary.mongodb.host=<secondary_mongodb_host>
secondary.mongodb.port=<secondary_mongodb_port>
secondary.mongodb.database=<secondary_mongodb_database>

yml:
primary:
    mongodb:
        host:<primary_mongodb_host>
        port:<primary_mongodb_port>
        database:<primary_mongodb_database>

secondary:
    mongodb:
        host:<secondary_mongodb_host>
        port:<primary_mongodb_port>
        database:<secondary_mongodb_database>
複製代碼

建立配置類:app

public abstract class AbstractMongoConfig {
    //mongodb配置屬性 
    private String host, database;
    private int port;
    //Setter methods go here.. 
    /* * 建立MongoDBFactory的方法 * 兩個MongoDB鏈接共用 */
    public MongoDbFactory mongoDbFactory() throws Exception {
        return new SimpleMongoDbFactory(new MongoClient(host, port), database);
    }
    /* * Factory method to create the MongoTemplate */
    abstract public MongoTemplate getMongoTemplate() throws Exception;
}複製代碼

鏈接配置: ide

//Master-MongoTemplate
@Configuration  
@ConfigurationProperties(prefix = "primary.mongodb") //前綴指向
public class CommonMongoConfig extends AbstractMongoConfig {
    /** * MongoTemplate實現 * @Bean爲建立的mongotemplate實例提供一個名稱(primarymongotemplate) * @Primary 設爲默認 */
    @Primary
    @Override
    public @Bean(name = "primaryMongoTemplate") MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
}複製代碼
// Slave-mongoTempalte
@Configuration 
class @ConfigurationProperties(prefix = "secondary.mongodb") //前綴映射
public class SecondaryMongoConfig extends AbstractMongoConfig {
    
    @Override public @Bean(name = "secondaryMongoTemplate")
    MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
}複製代碼

使用lua

//Using MongoTemplate for primary database
@Autowired
@Qualifier(value = "primaryMongoTemplate") //primarymongotemplate爲默認的mongotemplate
protected MongoTemplate mongoTemplate;


//Using mongoTemplate for secondary database
@Autowired
@Qualifier(value = "secondaryMongoTemplate")
protected MongoTemplate mongoTemplate;複製代碼
相關文章
相關標籤/搜索