← Все навыки

Java. Spring

Устройство Spring Framework «под капотом»: IoC-контейнер, управление бинами, Dependency Injection и AOP — осознанно конфигурировать контейнер, а не просто навешивать аннотации

11 частей + разбор вопросов Middle / Senior Spring Core 6.x, Java 17+ Индивидуально с ментором

Для кого этот навык

  • Java-разработчики, которые используют Spring, но не понимают, что происходит внутри контейнера
  • Backend-инженеры, готовящиеся к секции Spring на собеседовании Middle / Senior
  • Все, кто хочет уверенно отвечать на вопросы про жизненный цикл бинов, прокси и AOP

Программа

IoC-контейнер и определения бинов

Части 1–2: IoC/DI, BeanDefinition, BeanFactory vs ApplicationContext
  • Inversion of Control и Dependency Injection, отличие от Service Locator
  • bean, BeanDefinition, BeanFactory vs ApplicationContext, refresh()
  • Три источника метаданных: XML, стереотипы, Java-config (@Configuration/@Bean)
  • @ComponentScan, @Import, @Enable-аннотации, CGLIB-проксирование (lite/full)

Dependency Injection

Часть 3: формы инъекции, @Qualifier/@Primary, циклические зависимости
  • Инъекция через конструктор, сеттер, поле; @Autowired
  • Разрешение неоднозначности: @Primary, @Qualifier, @Priority
  • Инъекция коллекций, ObjectProvider, @Lazy
  • Циклические зависимости и трёхуровневый кэш singleton'ов

Жизненный цикл и scope бинов

Часть 4: BeanPostProcessor, @PostConstruct, scope'ы, потокобезопасность
  • Полный жизненный цикл бина, Aware-интерфейсы, BeanPostProcessor
  • @PostConstruct / @PreDestroy и их ловушки
  • Scope'ы: singleton, prototype, web; потокобезопасность singleton'ов
  • Внедрение prototype в singleton: ObjectProvider, @Lookup, scoped proxy

Точки расширения и конфигурация

Части 5–7: BeanFactoryPostProcessor, Environment, @Profile, SpEL
  • BeanFactoryPostProcessor, BeanDefinitionRegistryPostProcessor и порядок выполнения
  • Environment, @PropertySource, @Value
  • Условная сборка бинов: @Profile, @Conditional
  • Resource/ResourceLoader, ConversionService, SpEL

AOP, события и инфраструктура

Части 8–11: AOP, @EventListener, валидация, @Async/@Scheduled
  • AOP: прокси JDK vs CGLIB, @Aspect, advice, pointcut, проблема self-invocation
  • События контейнера: @EventListener, @TransactionalEventListener
  • Jakarta Validation, MessageSource (локализация)
  • @Async и @Scheduled; внутреннее устройство сборки контекста

Spring Core: вопросы и ответы

Отдельный разбор вопросов с собеседований
  • Общие вопросы по Spring Framework и его модулям
  • IoC и Dependency Injection: виды инъекции, @Autowired под капотом, разрешение кандидатов
  • IoC-контейнер: BeanFactory против ApplicationContext
  • Жизненный цикл, scope'ы, прокси и AOP — с развёрнутыми ответами

Практика

В каждой части — блок «Вопросы с собеседований» и разбор на коде; решения приносите на код-ревью ментору

  • Мини-IoC-контейнер на рефлексии — понять границы работы Spring
  • Конфигурирование бинов всеми способами, выбор @Component vs @Bean
  • Диагностика и устранение циклических зависимостей
  • Собственные BeanFactoryPostProcessor / BeanPostProcessor (генерация бинов по аннотации)
  • Условная сборка через @Profile и кастомные @Conditional, вычисление SpEL
  • Аспекты через @Aspect, решение проблемы self-invocation
  • Декаплинг через события, декларативная асинхронность (@Async, @Scheduled)