Comprendre @Bean vs @Autowired dans Spring : Guide Complet

Introduction
Dans Spring, la gestion des dépendances est au cœur du framework. Deux annotations clés, @Bean
et @Autowired
, jouent des rôles distincts mais complémentaires. Cet article explique leurs différences, leurs cas d’usage et comment les utiliser efficacement.
Qu’est ce que @Bean
?
Définition
@Bean
est une annotation utilisée dans une classe de configuration (@Configuration
) pour déclarer manuellement un objet et l’ajouter au contexte Spring.
Cas d’usage
Quand vous avez besoin de configurer un objet ( ex : un filtre personnalisé, un composant externe).
Quand vous voulez personnaliser l’instanciation ( ex: passage de paramètres, initialisation complexe )
Exemple
@Configuration
public class AppConfig {
@Bean
public JwtUtil jwtUtil() {
return new JwtUtil("ma-clé-secrète"); // Configuration manuelle
}
@Bean
public JwtAuthenticationFilter jwtAuthFilter(JwtUtil jwtUtil) {
return new JwtAuthenticationFilter(jwtUtil); // Injection de dépendance
}
}
Avantage
Contrôle total sur la création de l’objet.
Qu’est ce que @Autowired
?
Définition
@Autowired
permet à Spring d’injecter automatiquement une dépendance déjà disponible dans le contexte (créé via @Bean
, @Component
…)
Cas d’usage
Quand on a besoin d’utiliser un composant existant ( ex: un service, un repository)
Pour éviter l’instanciation manuelle (new)
Exemple
@Service
public class AuthService {
@Autowired
private JwtUtil jwtUtil; // Injection automatique
public String generateToken(User user) {
return jwtUtil.generateToken(user.getEmail());
}
}
Avantage
Evite la duplication de code et suit le principe IoC (Inversion of Control)
Différences Clés
@Bean
Rôle : Créer un objet dans le contexte Spring.
Utilisation : Dans les classes
@Configuration
Contrôle : Personnalisation possible.
Dépendances : Peut prendre des paramètres
@Autowired
Rôle : Injecter un objet existant
Utilisation : Dans les composants Spring (
@Service
,@Controller
…)Contrôle : Injection automatique
Dépendances : Nécessite un objet déjà disponible.
Subscribe to my newsletter
Read articles from Aouassar Asmae directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
