mongo配置:
#mongo数据源1
spring.data.mongodb.primary.uri = mongodb://admin:xxx9527@272.31.98.24: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
代码配置:
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();
}
主数据源配置:
@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;
}
}
从数据源配置:
@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;
}
}
通过上述配置,就可以达到多数据源和集群的过程