Решение circular dependency в проекте на gradle + spring

95
31 августа 2021, 00:30

Есть куча модулей, но нас интересуют два из них (назовем их М1 и М2).

На старте приложения, когда спринг инитит бины, классу из модуля М1 нужно в post construct методе получить данные от класса из модуля М2. Соответственно получаем зависимость М1 <- М2.

И тут образовывается проблема, потому что нам нужно сделать так, чтобы в другом классе М2 был доступ к другому классу из модуля М1 на стадии работы приложения. То есть нужна зависимость М2 <- М1, но тоогда получается та самая circular dependency

Что делать ?

Answer 1

Когда образуется круговая зависимость, то есть M1 библиотека(dependency) зависит от M2 библиотеки, а M2 зависит от M1 решения могут быть следующие:

1) Разрывать эту связь и убрать одну из зависимотей M1 от M2, или M2 от M1

2) Если M1 и M2 это ваши библиотеки, а не сторонние зависимоти, то можно просто объединить их в один модуль, то есть в одну зависимоть.

READ ALSO
Организовать очередь сообщений

Организовать очередь сообщений

Есть задача организовать систему передачи сообщений от клиента к менеджеруСейчас используется со стороны клиента ejabber , со стороны менеджера...

154
LinkageError occurred while loading main class (java.lang.UnsupportedClassVersionError) (Java)

LinkageError occurred while loading main class (java.lang.UnsupportedClassVersionError) (Java)

Было установлено jdk 9 потом сменил на jdk 12

227
Проверка элемента перед добавлением в массив

Проверка элемента перед добавлением в массив

Есть пустой массив String[] list, как в цикле перед добавлением проверить на дублирование, если нет такого элемента тогда добавить

95