Fase 4 – Framework e Applicazioni Web (3–4 mesi)
Spring Boot, Spring Core e Spring Data JPA
- Spring Core: Dependency injection (
@Bean
,@Autowired
), IoC container. - Spring Boot: Auto-configurazione, starters (
spring-boot-starter-web
,spring-boot-starter-data-jpa
),application.yml
. - Spring Data JPA: Repositories (
CrudRepository
,JpaRepository
), query con@Query
, paginazione. - Esempio: Creare REST endpoints per la gestione delle attività (CRUD) in un'app di attività.
Spring Security (JWT, OAuth2)
- Concetti: Autenticazione, autorizzazione, filtri di sicurezza.
- JWT: Creare e validare token, utilizzare
JwtAuthenticationFilter
. - OAuth2: Configurare Resource Server, integrare con un provider (es. Google).
- Esempio: Proteggere gli endpoint delle attività con JWT e ruoli (
ADMIN
,USER
).
Test Unitari e di Integrazione
- Test unitari: JUnit 5, Mockito (
@Mock
,@InjectMocks
), test della logica di business. - Test di integrazione:
@SpringBootTest
,@WebMvcTest
, database H2 per i test. - Testcontainers: Test con PostgreSQL in container Docker.
- Esempio: Testare i servizi e gli endpoint dell'app di attività.
API RESTful e Documentazione con Swagger
- REST: Metodi HTTP, codici di stato, principi RESTful.
- Spring REST:
@RestController
,@RequestMapping
,@PathVariable
. - Swagger: Configurare springdoc-openapi, annotare con
@Operation
. - Esempio: Documentare gli endpoint dell'app di attività con Swagger UI.
Introduzione a GraphQL
- Concetti: Queries, mutations, schema.
- Spring Boot con GraphQL: Configurazione con spring-boot-starter-graphql.
- Esempio: Creare una query GraphQL per elencare le attività per stato.
Integrazione Frontend di Base
- Thymeleaf: Template per il rendering di pagine HTML con Spring Boot.
- Esempio: Creare un'interfaccia web semplice per visualizzare e creare attività.
Strumenti di Build: Maven e Gradle
- Maven: Struttura di
pom.xml
, dipendenze, plugin. - Gradle: File
build.gradle
, attività, gestione delle dipendenze. - Esempio: Configurare l'app di attività con Maven e Gradle.
Distribuzione del Progetto
- Piattaforme: Railway, Heroku, AWS (Elastic Beanstalk).
- Passaggi: Pacchettizzare come JAR, configurare CI/CD con GitHub Actions.
- Esempio: Distribuire l'app di attività su Railway con PostgreSQL.
Progetto Finale
Sistema di Gestione delle Attività
- Database: Tabelle Task
(titolo, descrizione, stato) e User
(relazione 1:N).
- Java: REST API con Spring Boot, Spring Data JPA per CRUD.
- Sicurezza: Autenticazione JWT, ruoli (ADMIN
, USER
).
- Test: Test unitari (servizi) e test di integrazione (endpoint con Testcontainers).
- Documentazione: Swagger UI con descrizioni degli endpoint.
- Opzionale: Aggiungere una query GraphQL per elencare le attività e un'interfaccia Thymeleaf per l'interazione.
- Git: Commit per ogni funzionalità (es. feature/rest-api
, feature/security
).
- Pubblicazione: Su GitHub con README (configurazione, endpoint, distribuzione).