Sobes.tech
Junior

Spring : un bean avec @Component est injecté à deux endroits — combien d'exemplaires sont créés ? Comment faire un nouvel exemplaire pour chaque injection ?

sobes.tech IA

Réponse de l'IA

Si un bean est annoté avec @Component et injecté à deux endroits, Spring créera par défaut une seule instance singleton de ce bean et l'utilisera partout.

Pour créer une nouvelle instance du bean à chaque injection, il faut changer la portée (scope) du bean en prototype:

@Component
@Scope("prototype")
public class MyBean {
    // ...
}

Dans ce cas, Spring créera une nouvelle instance du bean à chaque injection.

Important : lors de l'utilisation de beans prototype dans des beans singleton, il faut prendre en compte que Spring ne créera pas automatiquement de nouvelles instances à chaque appel, seulement lors de la création du bean singleton. Pour obtenir dynamiquement de nouvelles instances, on peut utiliser ObjectFactory ou Provider.