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 :
- Auto-configuration : détecte les dépendances présentes et configure automatiquement les beans nécessaires
- Starters : dépendances groupées et compatibles (ex:
spring-boot-starter-web) - Serveur embarqué : Tomcat/Jetty inclus, pas besoin de déployer un WAR
- Actuator : endpoints de monitoring et de santé prêts à l'emploi
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
@Component Bean générique
@Service Couche service
@Repository Couche persistance
@Controller Couche web
@RestController API REST
@Configuration Classe de config
@Bean Déclaration de bean
@Value Injection de propriété
@ConfigurationProperties Config typée
@Profile Config par environnement
@RequestMapping
@GetMapping / @PostMapping
@PathVariable
@RequestBody / @ResponseBody
@ExceptionHandler
@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
Spring Boot 3 requiert Java 17 minimum. Profite des records, sealed classes, pattern matching.
Compilation en image native pour un démarrage en millisecondes et une empreinte mémoire réduite.
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