天天看點

mondb建立多資料源,且資料源為叢集方式

作者:一星孤燈

mongo配置:

#mongo資料源1
spring.data.mongodb.primary.uri = mongodb://admin:[email protected]:27019/admin
#mongo資料源2
spring.data.mongodb.secondary.uri = mongodb://272.31.98.24:37017,272.31.98.24:37018,272.31.98.24:37019/test           
mondb建立多資料源,且資料源為叢集方式

mongo配置方式

代碼配置:

​​

public abstract class AbstractMongoConfig {

    protected String uri;

    public MongoDbFactory mongoDbFactory() {

        MongoClientURI mongoClientURI = new MongoClientURI(uri);
        try {
            return new SimpleMongoDbFactory(mongoClientURI);
        } catch (UnknownHostException e) {
            e.printStackTrace();
            return null;
        }
    public abstract MongoTemplate getMongoTemplate();

}           
mondb建立多資料源,且資料源為叢集方式

代碼編寫

​主資料源配置:

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


    @Primary
    @Bean(name = "primaryMongoTemplate")
    @Override
    public MongoTemplate getMongoTemplate() {
        return new MongoTemplate(mongoDbFactory());
    }

    @Primary
    @Bean(name = "primaryGridFsTemplate")
    public GridFsTemplate getGridFsTemplate() throws Exception {
        return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
    }

    @Bean
    public MappingMongoConverter mappingMongoConverter() throws Exception {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory());
        MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext());
        return converter;
    }

    @Bean
    public MongoMappingContext mongoMappingContext() throws ClassNotFoundException {
        MongoMappingContext mappingContext = new MongoMappingContext();
        return mappingContext;
    }


}
           
mondb建立多資料源,且資料源為叢集方式

主資料源

​從資料源配置:

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

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

    @Bean(name="secondaryGridFsTemplate")
    public GridFsTemplate getGridFsTemplate() throws Exception {
        return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
    }

    @Bean
    public MappingMongoConverter mappingMongoConverter() throws Exception {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory());
        MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext());
        return converter;
    }

    @Bean
    public MongoMappingContext mongoMappingContext() throws ClassNotFoundException {
        MongoMappingContext mappingContext = new MongoMappingContext();
        return mappingContext;
    }

}           
mondb建立多資料源,且資料源為叢集方式

從庫資料源配置

​通過上述配置,就可以達到多資料源和叢集的過程

mondb建立多資料源,且資料源為叢集方式

繼續閱讀