Skip to content

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).

Risorse