Profile picture of Philémon GLOBLÉHI
Philémon GLOBLÉHI
Développeur Java
Follow me
Generated by linktime
July 21, 2025
Un principe fondamental souvent mal compris par les développeurs Java. L'injection de dépendances en Spring Boot : pourquoi injecter l'interface plutôt que l'implémentation ? Le concept Au lieu d'instancier directement une classe concrète, on injecte une interface. Spring Boot se charge de fournir automatiquement l'implémentation correspondante. Pourquoi cette approche ? ✅ Faible couplage : Le contrôleur ne connaît que l'interface, pas l'implémentation. Vous pouvez passer d'EmailNotificationService à SmsNotificationService sans toucher au contrôleur. ✅ Testabilité : Facile de créer des mocks pour les tests unitaires. ✅ Flexibilité : Possibilité d'avoir plusieurs implémentations et de choisir laquelle utiliser selon le contexte. Spring Boot résout automatiquement quelle implémentation injecter grâce à son conteneur IoC. Si plusieurs implémentations existent, utilisez @Qualifier ou @Primary pour lever l'ambiguïté. Ce principe respecte l'inversion de dépendance (SOLID) et rend votre code plus maintenable.
Stay updated
Subscribe to receive my future LinkedIn posts in your mailbox.

By clicking "Subscribe", you agree to receive emails from linktime.co.
You can unsubscribe at any time.

101 Likes
July 21, 2025
Discussion about this post
Profile picture of Tchiwli Ange Emeric BOMISSO
Tchiwli Ange Emeric BOMISSO
Software Engineer | Oracle Certified Professional - Java SE 17 | FullStack Developer - Java - SpringBoot - Angular
1 month ago
Thanks for sharing, Philémon
Profile picture of Yann Pascal DEUNGOUE
Yann Pascal DEUNGOUE
Pictet Technical Architect : Full Dev(Springboot/ Angular)Ops(Kubernetes/Docker/automation pipeline)
1 month ago
Pour un développeur expert Spring ceci ne sont pas les seuls vraies raisons. Et même quelque part dangereux de ne présenter que cela. Car c’est comme dire à chaque développeur que pour le respect de l’inversion de dépendance il faut faire du spring. Sur le plan de spring tout ceci réside dans la façon dont Spring crée les proxy - à partir de l’interface on utilise le JDK Dynamic Proxy on ne connaît pas l’implémentation réelle de la classe et la classe peut être une pure classe java et surtout si elle est annotée @Transactional alors la logique transactionnelle est effectuée AVANT d’exécuter la méthode. - à partir d’une classe d’implémentation c’est le CGLIB Proxy qu’on utilise pour faire de l’injection surtout si elle n’implémente pas d’interface et cette classe ne doit pas être finale et ses méthodes ne doivent pas être finales et surtout on perd les avantages comme le Hot swapping de devtools mais pire encore tu perds la logique transactionnelle entre 2 méthodes de la même classe si une est annotée et l’autre pas.
Profile picture of Igor G.
Igor G.
Senior Developer | CyberArk Developer | CyberArk PAM Consultant
1 month ago
Principe 5 des principes SOLID