Всё в Spring стоит на контейнере: он создаёт объекты-бины, связывает их зависимостями и оборачивает в прокси для транзакций, кэша и безопасности. Половина «магии» Spring и большинство вопросов на собеседованиях объясняются тем, как работает контейнер и прокси.
Контейнер и бины
IoC и внедрение зависимостей, бины и их жизненный цикл, конфигурация и AOP.
Темы этапа
- IoC, DI и бины Основа
Внедрение зависимостей, стереотипы и @Bean, жизненный цикл, scopes.
- Конфигурация и контекст Основа
ApplicationContext, профили, properties, @ConfigurationProperties.
- AOP и прокси Основа
Аспекты, JDK и CGLIB прокси и почему не работает вызов @Transactional изнутри класса.
Вопросы с собеседований
Смотреть всеКак соотносятся IoC и DI в Spring?Junior
IoC (инверсия управления) — принцип: объекты не создают свои зависимости и не управляют своим жизненным циклом, это делает контейнер. DI (внедрение зависимостей) — конкретный способ IoC: зависимости передаются объекту извне — через конструктор, сеттер или…
Полный разборКак разрешить неоднозначность, когда для внедрения подходят несколько бинов одного типа?Middle
При нескольких кандидатах — NoUniqueBeanDefinitionException. Решения: @Primary — бин по умолчанию; @Qualifier("имя") — выбрать конкретный в точке внедрения (он сильнее @Primary).
Полный разборКакие преимущества у constructor injection по сравнению с field injection? Выберите все верные.Junior
Внедрение через конструктор даёт final-поля, полностью готовый объект сразу после создания, явные зависимости и тесты без Spring — достаточно вызвать конструктор.
Полный разборКак внедрить сразу все реализации интерфейса и выбирать нужную в рантайме?Middle
Внедрить List<T> или Map<String, T>: Spring передаст все бины типа. Список — в порядке @Order, карта — с именами бинов в ключах. Нужная стратегия выбирается в рантайме.
Полный разборРазборы темы
- IoC и Dependency Injection
Принцип инверсии управления, DI как его форма, три способа внедрения и почему конструктор, разрешение циклических зависимостей.
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.