Spring Framework

Définition

Le Spring Framework est un framework d’application open-source pour l’écosystème Java qui fournit un support d’infrastructure pour le développement d’applications Java. Il constitue le fondement de l’écosystème Spring plus large, incluant Spring Boot et Spring Cloud.

Vue d’ensemble

Créé par Rod Johnson en 2002 et publié pour la première fois en 2004, Spring a été conçu pour répondre à la complexité du développement Java d’entreprise. Il a introduit l’injection de dépendance et la programmation orientée aspect dans le développement Java grand public. Spring Boot (2014) a simplifié la configuration de Spring, en faisant le framework Java dominant pour le développement d’entreprise.

Composants clés

  • Spring Core : Conteneur de base avec injection de dépendance (IoC) et inversion de contrôle
  • Spring MVC : Framework web Model-View-Controller
  • Spring Data : Framework d’accès aux données avec API unifiée pour plusieurs magasins
  • Spring Security : Framework d’authentification et d’autorisation
  • Spring AOP : Programmation orientée aspect pour les préoccupations transversales
  • Spring ORM : Intégration de mappage objet-relationnel (Hibernate, JPA)
  • Spring Batch : Framework de traitement par lots
  • Spring Cloud : Outils pour systèmes distribués (découverte de services, serveur de configuration, circuit breakers)

Architecture

  • Injection de dépendance : Conteneur d’inversion de contrôle (IoC) gérant les cycles de vie des objets
  • Programmation orientée aspect : Séparation des préoccupations transversales (logging, transactions)
  • Convention over configuration : L’auto-configuration de Spring Boot réduit le boilerplate
  • Design modulaire : Utilisez uniquement les modules dont vous avez besoin

Écosystème Spring

|| Projet | Objectif | ||———|———| || Spring Framework | IoC de base, AOP, MVC, Data, Security | || Spring Boot | Auto-configuration opinée pour un développement rapide | || Spring Cloud | Patterns distribués/microservices (découverte de services, configuration, gateway) | || Spring Data | Accès unifié aux données à travers les magasins relationnels, NoSQL et cloud | || Spring Security | Authentification, autorisation et protection contre les attaques | || Spring Batch | Traitement par lots d’entreprise | || Spring Integration | Patterns d’intégration d’entreprise |

Versions majeures

|| Version | Année | Fonctionnalités clés | ||———|——|————–| || Spring 1.0 | 2004 | Conteneur IoC de base, AOP | || Spring 2.0 | 2006 | Annotations, AOP, Spring MVC | || Spring 3.0 | 2009 | Java 5+, JavaConfig, REST, EL | || Spring 4.0 | 2013 | Support Java 8, Groovy DSL, WebSocket | || Spring 5.0 | 2017 | Stack réactive (WebFlux), support Kotlin, Java 8+ | || Spring 6.0 | 2022 | Jakarta EE, Java 17+, records, classes scellées |

Spring Boot

Spring Boot n’est pas un framework séparé mais une couche de convention-over-configuration opinée sur Spring :

  • Auto-configuration de Spring et des bibliothèques tierces
  • Serveurs web intégrés (Tomcat, Jetty, Undertow)
  • Fonctionnalités prêtes pour la production (metrics, health checks, configuration externalisée)
  • Dépendances starter pour les cas d’usage courants
  • Pas de génération de code, pas de configuration XML requise

Licence

Le Spring Framework est publié sous la Apache License 2.0, une licence open-source permissive approuvée par l’OSI. Il est libre d’utilisation, de modification et de distribution pour tout usage, y compris commercial.

Voir spring-projects/spring-framework pour plus de détails.

Cas d’utilisation

  • Applications web d’entreprise
  • APIs RESTful et microservices
  • Applications cloud-native
  • Systèmes de traitement par lots
  • Applications réactives en temps réel (WebFlux)
  • Services financiers et systèmes bancaires

Frameworks associés