Appunti completi, dettagliati e strutturati per la preparazione dell'esame di Web Application II del corso di Laurea Magistrale in Ingegneria Informatica presso il Politecnico di Torino (Anno Accademico 2025/2026). Il materiale tratta in modo approfondito l'intero ecosistema di sviluppo per applicazioni enterprise moderne e reattive, integrando i costrutti avanzati del linguaggio Kotlin con il framework Spring Boot, architetture a microservizi, pattern distribuiti, database SQL/NoSQL e messaggistica asincrona, con diagrammi esplicativi e codice commentato. Il documento (oltre 270 pagine) è organizzato in 19 sezioni tematiche principali: Linguaggio Kotlin & Build Tool Gradle: type system, null safety, lambda, higher-order functions, delegates, generics, collection API, build automation con Gradle (Kotlin DSL, task, multi-module) e processamento di annotazioni via KAPT/Reflection. Core Spring Boot & Web MVC: Inversion of Control (IoC), Dependency Injection, Aspect-Oriented Programming (AOP), ciclo di vita dei bean, DispatcherServlet, controller REST, validazione JavaBean, DTO e documentazione interattiva OpenAPI/Swagger. Persistenza & Concorrenza (Spring Data JPA): ORM Hibernate, ciclo di vita delle entità (Transient, Managed, Detached), relazioni (@OneToMany, @ManyToMany), cascading, orphan removal, livelli di isolamento transazionale, locking ottimistico (@Version) e pessimistico. Logging & Testing: SLF4J, Logback (rolling policies, log asincrono), unit testing con Mockk, integration testing con Spring Test. Sicurezza & Autenticazione: protocolli OAuth 2.0 e OpenID Connect (OIDC), Identity & Access Management (IAM), configurazione dichiarativa di Spring Security, method security, gestione CORS e CSRF. Sistemi Distribuiti & NoSQL: architetture Event-Driven, message brokers (RabbitMQ, Apache Kafka streaming ed exchange patterns), microservizi, pattern Outbox, Sagas distribuite, CQRS, MongoDB (CRUD, aggregazioni) e Redis (caching, Pub/Sub, code). Integrazione con Spring AI: modelli di embedding e Chat Client API.
...continua