Le conteneur Spring (inversion de contrôle) crée, assemble et gère le cycle de vie des objets de l'application, appelés beans. Les classes annotées @Component, @Service, @Repository ou déclarées avec @Bean sont détectées, et leurs dépendances injectées, de préférence par le constructeur. Par défaut, un bean est un singleton.
Exemple
@Service
class ClientService {
ClientService(ClientRepository repo) {...}
}