
在application.properties文件中禁用自动索引创建
spring.data.mongodb.auto-index-creation=false
或application.yml文件
spring: data: mongodb: auto-index-creation: false
创建类MongoConfiguration whit @Configuration批注
Injetc这种依赖
private final MongoTemplate mongoTemplate;private final MongoConverter mongoConverter;
并添加此方法
@EventListener(ApplicationReadyEvent.class)public void initIndicesAfterStartup() { log.info("Mongo InitIndicesAfterStartup init"); var init = System.currentTimeMillis(); var mappingContext = this.mongoConverter.getMappingContext(); if (mappingContext instanceof MongoMappingContext) { MongoMappingContext mongoMappingContext = (MongoMappingContext) mappingContext; for (BasicMongoPersistentEntity<?> persistentEntity : mongoMappingContext.getPersistentEntities()) { var clazz = persistentEntity.getType(); if (clazz.isAnnotationPresent(document.class)) { var resolver = new MongoPersistentEntityIndexResolver(mongoMappingContext); var indexOps = mongoTemplate.indexOps(clazz); resolver.resolveIndexFor(clazz).forEach(indexOps::ensureIndex); } } } log.info("Mongo InitIndicesAfterStartup take: {}", (System.currentTimeMillis() - init));}记住var仅适用于Java 11+
最后一课,使用龙目岛
import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.boot.context.event.ApplicationReadyEvent;import org.springframework.context.event.EventListener;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.convert.MongoConverter;import org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexResolver;import org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity;import org.springframework.data.mongodb.core.mapping.document;import org.springframework.data.mongodb.core.mapping.MongoMappingContext;@Slf4j@RequiredArgsConstructor@Configurationpublic class MongoConfiguration {private final MongoTemplate mongoTemplate;private final MongoConverter mongoConverter;@EventListener(ApplicationReadyEvent.class)public void initIndicesAfterStartup() { log.info("Mongo InitIndicesAfterStartup init"); var init = System.currentTimeMillis(); var mappingContext = this.mongoConverter.getMappingContext(); if (mappingContext instanceof MongoMappingContext) { MongoMappingContext mongoMappingContext = (MongoMappingContext) mappingContext; for (BasicMongoPersistentEntity<?> persistentEntity : mongoMappingContext.getPersistentEntities()) { var clazz = persistentEntity.getType(); if (clazz.isAnnotationPresent(document.class)) { var resolver = new MongoPersistentEntityIndexResolver(mongoMappingContext); var indexOps = mongoTemplate.indexOps(clazz); resolver.resolveIndexFor(clazz).forEach(indexOps::ensureIndex); } } } log.info("Mongo InitIndicesAfterStartup take: {}", (System.currentTimeMillis() - init)); }}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)