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 статей. Можно читать подряд (фундамент → веб → транзакции/данные → продвинутое → эксплуатация) или точечно.
Фундамент
- DI/IoC, bean scopes — ApplicationContext, как Spring создаёт бины, скоупы,
@Configurationvs@Component, условные бины. - Жизненный цикл бина с примерами — восемь фаз от конструктора до destruction, с рабочим демо-кодом, выводом в консоль и разбором ловушек.
- Auto-configuration, properties, profiles — как работает
@EnableAutoConfigurationпод капотом,@ConfigurationProperties, профили, custom starter.
Веб
- Spring MVC: REST, валидация, exception handlers —
@RestController, валидация через Bean Validation, единая обработка ошибок, HandlerInterceptor, content negotiation. - Spring WebFlux: когда брать, Mono/Flux, R2DBC — reactive stack, чем отличается от MVC, когда оправдан, типичные ловушки.
Транзакции и данные
@Transactionalглубоко: propagation, isolation, ловушки — как работает proxy, self-invocation, checked exceptions, propagation REQUIRED/REQUIRES_NEW/NESTED, rollback rules.- Spring Data JPA: repositories, проекции, OSIV — query methods, JPQL, paging, projections, fetch strategies, проблема OSIV, когда нативный SQL.
Сообщения и события
- Spring Events:
@EventListener,@TransactionalEventListener, AsyncEvents — синхронные и асинхронные события, события, привязанные к транзакции, как domain event publisher. - Spring AOP: когда нужен,
@Aspect, ограничения — concepts, pointcut, advice, как Spring инструментирует, ограничения (final, self-invocation).
Безопасность
- Spring Security: фильтры, AuthN, AuthZ, OAuth2 — SecurityFilterChain, аутентификация и авторизация, method security, OAuth2 resource server и client.
Тестирование
- Spring Testing:
@SpringBootTest, слайсы, TestContainers —@WebMvcTest,@DataJpaTest, MockMvc, WebTestClient, TestContainers для интеграционных тестов.
Эксплуатация
- Actuator, метрики, трейсинг — health, info, custom endpoints, Micrometer, distributed tracing.
- Scheduled, Async, виртуальные потоки —
@Scheduled,@Async, пулы потоков, виртуальные потоки Java 21+.
Связанное
- Use Case Pattern — методология, опирающаяся на Spring.
- jOOQ Style Guide — альтернатива Spring Data JPA для persistence-слоя.
- Архитектурные паттерны — CQRS, Hexagonal, Resilience — реализация в Spring-стеке.