• 请使用“ MongoMappingContext#setAutoIndexCreation(boolean)”或覆盖“MongoConfigurationSupport#autoIndexCreation()”以明确


    http://codingdict.com/questions/35983

    在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
    @Configuration
    public 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));
        }
    
    }
    
     
  • 相关阅读:
    Synchronized 锁 批量重偏向 和批量撤销
    Synchronize 偏向锁,轻量级锁升级和撤销过程,对象头的变化
    JAVA 对象到底有什么
    什么是操作系统虚拟地址
    从C角度看 i = i+ 1本质
    Linux操作系统的三种锁机制
    SpringCloud启动过程中如何完成Nacos服务注册
    Nacos源码一
    JAVA线程的本质
    SpringCloud启动-Nacos服务注册
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/13448080.html
Copyright © 2020-2023  润新知