Skip to content

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

Ressources