How to disable spring-data-mongodb autoconfiguration in spring-boot

前端 未结 6 1311
故里飘歌
故里飘歌 2020-12-13 13:08

Has anyone tried disabling autoconfiguration for mongodb in spring-boot?

I am trying out spring-boot with spring-data-mongodb; Using java based configuration; Using

相关标签:
6条回答
  • 2020-12-13 13:34

    Try to Run application in Debug mode. It happens when MongoDB dependant configaration is trying to instantiate but respective bean not present. In My case I have excluded MongoDataAutoConfiguration.class and MongoRepositoriesAutoConfiguration.class, to get the application run.

    @SpringBootApplication @EnableAutoConfiguration(exclude={MongoAutoConfiguration.class, MongoRepositoriesAutoConfiguration .class,MongoDataAutoConfiguration.class}) public class SomeApplication { //... }

    0 讨论(0)
  • 2020-12-13 13:41

    As pointed out by Andy Wilkinson in comments, when using EnableAutoConfiguration with exclude list make sure there are no other classes annotated with EnableAutoConfiguration or SpringBootApplication.

    0 讨论(0)
  • 2020-12-13 13:45

    This is how I do it:

    @SpringBootApplication(exclude = {
      MongoAutoConfiguration.class, 
      MongoDataAutoConfiguration.class
    })
    

    or as suggested by Dan Oak:

    spring.autoconfigure.exclude= \
      org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\
      org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration
    
    0 讨论(0)
  • 2020-12-13 13:45

    Same as https://stackoverflow.com/a/45929916/5213837 with https://stackoverflow.com/a/49980868/5213837, Spring boot 2.3/Kotlin

    @SpringBootApplication(exclude = [MongoAutoConfiguration::class, MongoDataAutoConfiguration::class]
    
    @Profile("mongo")
    @Configuration
    class CustomMongoAutoConfiguration: MongoAutoConfiguration() {
        override fun mongo(
            properties: MongoProperties?,
            environment: Environment?,
            builderCustomizers: ObjectProvider<MongoClientSettingsBuilderCustomizer>?,
            settings: ObjectProvider<MongoClientSettings>?
        ): MongoClient {
            return super.mongo(properties, environment, builderCustomizers, settings)
        }
    }
    
    @Profile("mongo")
    @Configuration
    @EnableConfigurationProperties(MongoProperties::class)
    class CustomMongoDataAutoConfiguration : MongoDataAutoConfiguration()
    
    0 讨论(0)
  • 2020-12-13 13:46

    Spring Boot 2.3.x:

    spring.autoconfigure.exclude[0]: org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration
    spring.autoconfigure.exclude[1]: org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration
    

    Reactive:

    spring.autoconfigure.exclude[0]: org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration
    spring.autoconfigure.exclude[1]: org.springframework.boot.autoconfigure.data.mongo.MongoReactiveRepositoriesAutoConfiguration
    
    0 讨论(0)
  • 2020-12-13 13:56

    My use case was slightly different. I had a requirement for 2 different databases in the same project. I extended the auto configuration classes and added a profile annotation.

    @Profile("mongo")
    @Configuration
    public class CustomMongoAutoConfiguration extends MongoAutoConfiguration {
    
        public CustomMongoAutoConfiguration(
            MongoProperties properties,
            ObjectProvider<MongoClientOptions> options,
            Environment environment) {
            super(properties,options,environment);
        }
    }
    

    And

    @Profile("mongo")
    @Configuration
    @EnableConfigurationProperties(MongoProperties.class)
    public class CustomMongoDataAutoConfiguration extends MongoDataAutoConfiguration {
    
        public CustomMongoDataAutoConfiguration(
            ApplicationContext applicationContext,
            MongoProperties properties) {
            super(applicationContext,properties);
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题