IoC (Inversion of Control) — это паттерн проектирования, который определяет, что объекты должны зависеть от абстракций, а не от конкретных реализаций, и что объекты должны быть созданы и настроены вне зависимых классов.
В Java IoC часто реализуется с помощью контейнера внедрения зависимостей (Dependency Injection Container, DI container). Контейнер
DI отвечает за создание, настройку и предоставление объектов зависимым классам.В примере на картинке мы используем аннотацию
@Autowired для указания контейнеру DI, что класс UserService зависит от объекта Database. Контейнер DI создаст объект Database и присвоит его полю database класса UserService.#для_продвинутых
