Spring

Раздел про Spring и Spring Boot: DI/IoC, auto-configuration, MVC, WebFlux, @Transactional, Spring Data JPA, Events, AOP, Security, Testing, Actuator/Observability, Scheduled/Async/Virtual Threads. Объяснения с примерами кода.

Зачем для UCP. Spring/Spring Boot — фундамент всех UCP-сервисов. Без понимания DI, lifecycle, транзакций, AOP, Spring Data — нельзя осознанно писать Handler-ы и интегрировать инфраструктуру. Соответствует фазе 4 программы.

Раздел разбит на 13 статей. Можно читать подряд (фундамент → веб → транзакции/данные → продвинутое → эксплуатация) или точечно.

Фундамент

  1. DI/IoC, bean scopes — ApplicationContext, как Spring создаёт бины, скоупы, @Configuration vs @Component, условные бины.
  2. Жизненный цикл бина с примерами — восемь фаз от конструктора до destruction, с рабочим демо-кодом, выводом в консоль и разбором ловушек.
  3. Auto-configuration, properties, profiles — как работает @EnableAutoConfiguration под капотом, @ConfigurationProperties, профили, custom starter.

Веб

  1. Spring MVC: REST, валидация, exception handlers@RestController, валидация через Bean Validation, единая обработка ошибок, HandlerInterceptor, content negotiation.
  2. Spring WebFlux: когда брать, Mono/Flux, R2DBC — reactive stack, чем отличается от MVC, когда оправдан, типичные ловушки.

Транзакции и данные

  1. @Transactional глубоко: propagation, isolation, ловушки — как работает proxy, self-invocation, checked exceptions, propagation REQUIRED/REQUIRES_NEW/NESTED, rollback rules.
  2. Spring Data JPA: repositories, проекции, OSIV — query methods, JPQL, paging, projections, fetch strategies, проблема OSIV, когда нативный SQL.

Сообщения и события

  1. Spring Events: @EventListener, @TransactionalEventListener, AsyncEvents — синхронные и асинхронные события, события, привязанные к транзакции, как domain event publisher.
  2. Spring AOP: когда нужен, @Aspect, ограничения — concepts, pointcut, advice, как Spring инструментирует, ограничения (final, self-invocation).

Безопасность

  1. Spring Security: фильтры, AuthN, AuthZ, OAuth2 — SecurityFilterChain, аутентификация и авторизация, method security, OAuth2 resource server и client.

Тестирование

  1. Spring Testing: @SpringBootTest, слайсы, TestContainers@WebMvcTest, @DataJpaTest, MockMvc, WebTestClient, TestContainers для интеграционных тестов.

Эксплуатация

  1. Actuator, метрики, трейсинг — health, info, custom endpoints, Micrometer, distributed tracing.
  2. Scheduled, Async, виртуальные потоки@Scheduled, @Async, пулы потоков, виртуальные потоки Java 21+.

Связанное