Устранение ошибок инициализации контекста Spring при смешивании пружины, а не кода пружины - PullRequest
0 голосов
/ 16 апреля 2019

Я получил существующее внутреннее 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...