请使用“ MongoMappingContext#setAutoIndexCreation(boolean)”或覆盖“MongoConfigurationSupport#autoIndexCreati

请使用“ MongoMappingContext#setAutoIndexCreation(boolean)”或覆盖“MongoConfigurationSupport#autoIndexCreati,第1张

请使用“ MongoMappingContext#setAutoIndexCreation(boolean)”或覆盖“MongoConfigurationSupport#autoIndexCreati

在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));    }}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4897726.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-12
下一篇2022-11-12

发表评论

登录后才能评论

评论列表(0条)

    保存