Spring Boot загружает компонент перед зависимым компонентом - PullRequest
0 голосов
/ 30 января 2019

У меня странное поведение в моем проекте с использованием Spring.У меня есть такая структура:

Main-Spring-Project  
  |_Depends on Library A  
     |_Depends on Library B  

Теперь ... есть компонент @Autowired в компоненте A, который внедряет компонент в B. Когда у меня все 3 проекта открыты в моей среде разработки и запускаютсяОсновной проект, все работает отлично.Но если я удаляю проект A и покидаю B, он начинает зависать, когда начинает говорить:

Field factory in [class in A] required a bean of type '[class in B]' that could not be found.

, так что ... я подозреваю, что это загрузка A до B. Что я не понимаю, так это почемуотлично работает, если у меня открыты оба проекта, и почему происходит сбой, когда у меня закрыто A (основной проект использует свой JAR)

Кстати ... если я удаляю A и B, все снова работает идеально.

1 Ответ

0 голосов
/ 30 января 2019

No Spring не допускает ошибок при загрузке контекста.
Такое поведение имеет смысл: класс просто недоступен во время выполнения.

Здесь вы работаете со снимком / текущим исходным кодом разработки / скомпилированными классами библиотеки B, поскольку библиотека B составляет часть вашего текущего кода разработки.
Это означает, что зависимости / классы библиотеки B необходимы во время выполненияот приложения зависит не Maven, а то, к чему у вашей IDE есть доступ: проекты библиотек A и B.

Чтобы избежать этого, вам следует install (mvn clean install) зависимость B в вашем локальном репозитории Maven / Gradle, но это может быть нецелесообразно, если вам нужно повторять задание 20 дней в день, потому чтоB Исходный код меняется 20 дней в день.

Обратите внимание, что если вы не используете IDE, вы будете ограничены установкой зависимости при каждой модификации.Итак, наконец, это не так уж и плохо.Нет?

...