Phase 4 – Frameworks et Applications Web (3–4 mois)
Spring Boot, Spring Core et Spring Data JPA
- Spring Core : Injection de dépendances (
@Bean
,@Autowired
), conteneur IoC. - Spring Boot : Auto-configuration, starters (
spring-boot-starter-web
,spring-boot-starter-data-jpa
),application.yml
. - Spring Data JPA : Repositories (
CrudRepository
,JpaRepository
), requêtes avec@Query
, pagination. - Exemple : Créer des endpoints REST pour gérer des tâches (CRUD) dans une application de tâches.
Spring Security (JWT, OAuth2)
- Concepts : Authentification, autorisation, filtres de sécurité.
- JWT : Créer et valider des tokens, utiliser
JwtAuthenticationFilter
. - OAuth2 : Configurer un Resource Server, intégrer avec un fournisseur (par exemple, Google).
- Exemple : Protéger les endpoints des tâches avec JWT et roles (
ADMIN
,USER
).
Tests Unitaires et d’Intégration
- Unit tests : JUnit 5, Mockito (
@Mock
,@InjectMocks
), tester la logique métier. - Integration tests :
@SpringBootTest
,@WebMvcTest
, base de données H2 pour les tests. - Testcontainers : Tester avec PostgreSQL dans des conteneurs Docker.
- Exemple : Tester les services et endpoints de l’application de tâches.
APIs RESTful et Documentation avec Swagger
- REST : Méthodes HTTP, codes de statut, principes RESTful.
- Spring REST :
@RestController
,@RequestMapping
,@PathVariable
. - Swagger : Configurer springdoc-openapi, annoter avec
@Operation
. - Exemple : Documenter les endpoints de l’application de tâches avec Swagger UI.
Introduction à GraphQL
- Concepts : Queries, mutations, schema.
- Spring Boot avec GraphQL : Configuration avec spring-boot-starter-graphql.
- Exemple : Créer une query GraphQL pour lister les tâches par statut.
Intégration Frontend de Base
- Thymeleaf : Templates pour rendre des pages HTML avec Spring Boot.
- Exemple : Créer une interface web simple pour visualiser et créer des tâches.
Outils de Build : Maven et Gradle
- Maven : Structure du
pom.xml
, dépendances, plugins. - Gradle : Fichier
build.gradle
, tâches, gestion des dépendances. - Exemple : Configurer l’application de tâches avec Maven et Gradle.
Déploiement de Projet
- Plateformes : Railway, Heroku, AWS (Elastic Beanstalk).
- Étapes : Empaqueter en JAR, configurer CI/CD avec GitHub Actions.
- Exemple : Déployer l’application de tâches sur Railway avec PostgreSQL.
Projet Final
Système de Gestion de Tâches
- Base de données : Tables Task
(titre, description, statut) et User
(relation 1:N).
- Java : API REST avec Spring Boot, Spring Data JPA pour CRUD.
- Sécurité : Authentification JWT, roles (ADMIN
, USER
).
- Tests : Tests unitaires (services) et tests d’intégration (endpoints avec Testcontainers).
- Documentation : Swagger UI avec descriptions des endpoints.
- Optionnel : Ajouter une query GraphQL pour lister les tâches et une interface Thymeleaf pour l’interaction.
- Git : Commits par fonctionnalité (par exemple, feature/rest-api
, feature/security
).
- Publier : Sur GitHub avec un README (configuration, endpoints, déploiement).