Spring обнаруживает конкретную циклическую ссылку, но ТОЛЬКО на CI-сервере, и не всегда, так как мне найти круговую ссылку? - PullRequest
0 голосов
/ 05 марта 2019

Я обнаружил следующую ошибку в тесте дыма в контейнере Docker, который выполняется на нашем сервере CI Linux:

Причина: org.springframework.beans.factory.BeanCurrentlyInCreationException: Ошибка созданияbean-компонент с именем 'addressServiceClient': bean-компонент с именем 'addressServiceClient' был добавлен в другие bean-компоненты [cartServiceClient] в его исходной версии как часть циклической ссылки, но в конечном итоге был упакован.Это означает, что указанные другие bean-компоненты не используют окончательную версию bean-компонента.Это часто является результатом чрезмерного совпадения типов - например, рассмотрите возможность использования 'getBeanNamesOfType' с отключенным флагом 'allowEagerInit'.

Я прочитал много ресурсов, которые говорят об этом общемпроблема, поэтому я понимаю основную проблему.

Я даже обнаружил все случаи внедрения конструктора в нашу кодовую базу и заменил их всеми обычными методами автопроводки и @PostConstruct.

Я даже понимаюпочему эта ошибка может произойти ТОЛЬКО на нашем сервере Linux CI, а не на моем ноутбуке с Windows (из-за порядка разрешения).

Что еще более странно, сборка Linux CI непотерпеть неудачу все время.Это похоже на любую другую сборку или около того.

Я предполагаю, что, хотя я, кажется, удалил все случаи внедрения в конструктор, есть еще кое-что, что заставляет меня обращаться по этой циклической ссылке.

Итак, что мне действительно нужно, так это стратегия НАЙТИ эту циркулярную ссылку.Наше приложение Spring Boot, и у нас нет XML-контекстов, все это @Bean config.

Что я могу сделать, чтобы точно определить, что такое граф ссылок, чтобы я мог реорганизовать его, чтобы удалить эту циклическую ссылку

...