關閉Mongo的自動化配置
因為項目需要配置MongoDB
多數據源.
為了避免Spring boot
自動化配置帶來的影響,因此通過注解屏蔽MongoDB
的自動化配置
.
@SpringBootApplication(exclude =
{MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
public class StatApplication {
public static void main(String[] args) {
SpringApplication.run(StatApplication.class, args);
}
}
配置文件
個人傾向於使用uri
方式初始化MongoClient
,配置如下所示:
mongodb:
meta:
uri: mongodb://*:27017/admin?maxPoolSize=64
stat:
uri: mongodb://*:27017/stat?maxPoolSize=64
配置代碼
@Data
@Configuration
public class MorphiaConfig {
@Value("${mongodb.meta.uri}")
private String metaUri;
@Value("${mongodb.stat.uri}")
private String statUri;
@Bean("metaMongoClient")
public MongoClient metaMongoClient() {
final MongoClientOptions.Builder builder = MongoClientOptions.builder()
.maxConnectionIdleTime(6000)
.maxConnectionLifeTime(0);
return new MongoClient(new MongoClientURI(metaUri, builder));
}
@Bean("statMongoClient")
public MongoClient statMongoClient() {
final MongoClientOptions.Builder builder = MongoClientOptions.builder()
.maxConnectionIdleTime(6000)
.maxConnectionLifeTime(0);
return new MongoClient(new MongoClientURI(statUri, builder));
}
@Bean("metaDataStore")
public Datastore metaDataStore(@Autowired @Qualifier("metaMongoClient") MongoClient mongoClient) {
Morphia res = new Morphia();
// 掃描實體類
res.mapPackage("com.*.*.entity.meta");
Datastore datastore = res.createDatastore(mongoClient, "metadata");
// 建立索引
datastore.ensureIndexes();
return datastore;
}
@Bean("statDataStore")
public Datastore statDataStore(@Autowired @Qualifier("statMongoClient") MongoClient mongoClient) {
Morphia res = new Morphia();
// 掃描實體類
res.mapPackage("com.*.*.entity.stat");
Datastore datastore = res.createDatastore(mongoClient, "stat");
// 建立索引
datastore.ensureIndexes();
return datastore;
}
}
通過以上代碼,就可以建立兩個獨立的Datastore
對象,可以通過對應的Bean name
進行引入.
PS:
如果您覺得我的文章對您有幫助,請關注我的微信公眾號,謝謝!