Изучение

Жизненный цикл и teardown

Запрет новых разрешений во время закрытия и освобождение объектов в обратном порядке зависимостей.

v1.1.0Продвинутый уровеньark_di

Жизненный цикл и teardown

При закрытии контейнер переходит в состояние closing, запрещает новые внешние разрешения, ожидает активные resolution lease, строит план по зафиксированным зависимостям и вызывает disposer в обратном порядке.

Если Service зависит от Repository, а Repository — от Client, порядок будет следующим:

text
Service → Repository → Client

Контейнер пытается выполнить весь план. Несколько ошибок объединяются в DiCloseException, поэтому один сбой не отменяет независимую очистку. Повторный close() возвращает тот же Future.

При цикле DiCircularDependencyException содержит путь зависимостей, сформировавший цикл.