Retour au portfolio Culture technique
Framework Java

Spring Boot

Le framework Java incontournable pour créer des applications prêtes pour la production en quelques minutes, grâce à l'auto-configuration et l'injection de dépendances.

JavaIoCAuto-configurationRESTMicroservices

Spring vs Spring Boot

Spring Framework est un framework Java très complet mais verbose : il fallait configurer manuellement chaque bean, chaque datasource, chaque servlet. Spring Boot a révolutionné ça en 2014.

Spring Boot apporte :

Convention over configuration : Spring Boot choisit des valeurs par défaut sensées. On ne configure que ce qui s'écarte de la convention.

L'injection de dépendances (IoC)

Le principe fondamental de Spring : c'est le conteneur IoC (Inversion of Control) qui crée et injecte les dépendances, pas le développeur. On déclare ce dont on a besoin, Spring le fournit.

@Service
public class CommandeService {

    private final CommandeRepository repository;
    private final NotificationService notificationService;

    // Injection par constructeur – recommandée
    public CommandeService(CommandeRepository repository,
                           NotificationService notificationService) {
        this.repository = repository;
        this.notificationService = notificationService;
    }
}

Les annotations essentielles

Stéréotypes

@Component Bean générique
@Service Couche service
@Repository Couche persistance
@Controller Couche web
@RestController API REST

Configuration

@Configuration Classe de config
@Bean Déclaration de bean
@Value Injection de propriété
@ConfigurationProperties Config typée
@Profile Config par environnement

Web & REST

@RequestMapping
@GetMapping / @PostMapping
@PathVariable
@RequestBody / @ResponseBody
@ExceptionHandler

Transactionnel & Data

@Transactional Gestion des transactions
@Entity Entité JPA
@Repository Spring Data
@Query Requête JPQL/SQL
@Scheduled Tâches planifiées

Créer un endpoint REST

@RestController
@RequestMapping("/api/commandes")
public class CommandeController {

    private final CommandeService service;

    public CommandeController(CommandeService service) {
        this.service = service;
    }

    @GetMapping("/{id}")
    public ResponseEntity<CommandeDTO> getById(@PathVariable Long id) {
        return service.findById(id)
            .map(ResponseEntity::ok)
            .orElse(ResponseEntity.notFound().build());
    }

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public CommandeDTO create(@RequestBody CreateCommandeRequest request) {
        return service.create(request);
    }
}

Spring Boot 3 – Les nouveautés

Java 17+

Spring Boot 3 requiert Java 17 minimum. Profite des records, sealed classes, pattern matching.

GraalVM Native

Compilation en image native pour un démarrage en millisecondes et une empreinte mémoire réduite.

Jakarta EE 10

Migration de javax.* vers jakarta.*. Observabilité améliorée avec Micrometer.

Starters courants

spring-boot-starter-web spring-boot-starter-data-jpa spring-boot-starter-security spring-boot-starter-test spring-boot-starter-actuator spring-boot-starter-amqp spring-boot-starter-batch spring-boot-starter-validation