Я получил существующее внутреннее Java-приложение и пытался постепенно преобразовать его в приложение SpringBoot .Я начал с использования родительского pom SpringBoot.
При инициализации контекста Spring, однако, я получаю сообщение об ошибке из-за некорректной инициализации Mongo SpringBeans.Далее приведена конкретная ошибка (но она не помогла найти основную причину).
Exception encountered during context initialization - cancelling refresh attempt:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'EmbeddedMongoServer'
defined in class path resource [
org/springframework/boot/autoconfigure/mongo/embedded/EmbeddedMongoAutoConfiguration.class]:
Bean instantiation via factory method failed; nested exception...
Добавлены новые строки для удобства чтения на SO.
однако в существующем коде приложения не использует SpringMongo , а использует Mongo без Spring .
Итак Как можно предотвратить попытки Spring сконфигурировать Mongo автоматически? (он же обозначен как автоматическое подключение Spring).
Я знаю, что инициализация не удалась, потому что автоконфигурация Spring запускается, потому что он находит com.mongodb.MongoClient
в пути к классам и обнаружил это, включив отладку Spring (см. Есть ли хороший способ диагностики проблемы создания Spring bean / service? ).
После включения отладки Spring я вижу сообщение:
EmbeddedMongoAutoConfiguration matched:
- @ConditionalOnClass found required classes 'com.mongodb.MongoClient', 'de.flapdoodle.embed.mongo.MongoStarter'
Итак, я знаю, что Автоконфигурация Springs является виновником попытки создания экземпляра Mongo Springbean, но не знаю, как это предотвратить.
Что я сделал до сих пор
Я пытаюсь сделать существующее (не пружинное) приложение aПриложение SpringBoot, и я использую родительский модуль SpringBoot и модуль SpringWeb, как показано ниже.
<parent>
<groupId>org.springframework.boot</groupId>
<artifcatId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
Я хочу использовать RestTemplate
Spring для выполнения http-вызовов rest на другие серверы, поэтому зависимость от spring-был добавлен веб.
Другие ресурсы
При поиске решения я обнаружил следующее, некоторые из них более полезны, чем другие.
Другие бесполезные
Есть много всего, поэтому я надеюсь, что ответ от других будет на StackOverflow.