Spring - Câblage automatique des haricots

Vous avez appris à déclarer des beans à l'aide de l'élément <bean> et à injecter <bean> à l'aide des éléments <constructor-arg> et <property> dans le fichier de configuration XML.

Le conteneur Spring peut autowire relations entre les beans collaborant sans utiliser les éléments <constructor-arg> et <property>, ce qui permet de réduire la quantité de configuration XML que vous écrivez pour une grande application basée sur Spring.

Modes de câblage automatique

Voici les modes de câblage automatique, qui peuvent être utilisés pour indiquer au conteneur Spring d'utiliser le câblage automatique pour l'injection de dépendances. Vous utilisez l'attribut autowire de l'élément <bean /> pour spécifierautowire mode pour une définition de bean.

Sr. Non Mode et description
1 no

Il s'agit du paramètre par défaut, ce qui signifie qu'il n'y a pas de câblage automatique et vous devez utiliser une référence de bean explicite pour le câblage. Vous n'avez rien à faire de spécial pour ce câblage. C'est ce que vous avez déjà vu dans le chapitre Injection de dépendances.

2 de nom

Autowiring par nom de propriété. Le conteneur Spring examine les propriétés des beans sur lesquels l' attribut autowire est défini sur byName dans le fichier de configuration XML. Il essaie ensuite de faire correspondre et de câbler ses propriétés avec les beans définis par les mêmes noms dans le fichier de configuration.

3 par type

Câblage automatique par type de données de propriété. Le conteneur Spring examine les propriétés des beans sur lesquels l' attribut autowire est défini sur byType dans le fichier de configuration XML. Il essaie ensuite de faire correspondre et de câbler une propriété si sontypecorrespond exactement à l'un des noms de beans dans le fichier de configuration. Si plusieurs de ces beans existent, une exception fatale est levée.

4 constructor

Similar to byType, but type applies to constructor arguments. If there is not exactly one bean of the constructor argument type in the container, a fatal error is raised.

5 autodetect

Spring first tries to wire using autowire by constructor, if it does not work, Spring tries to autowire by byType.

You can use byType or constructor autowiring mode to wire arrays and other typed-collections.

Limitations with autowiring

Autowiring works best when it is used consistently across a project. If autowiring is not used in general, it might be confusing for developers to use it to wire only one or two bean definitions. Though, autowiring can significantly reduce the need to specify properties or constructor arguments but you should consider the limitations and disadvantages of autowiring before using them.

Sr.No. Limitations & Description
1

Overriding possibility

You can still specify dependencies using <constructor-arg> and <property> settings which will always override autowiring.

2

Primitive data types

You cannot autowire so-called simple properties such as primitives, Strings, and Classes.

3

Confusing nature

Autowiring is less exact than explicit wiring, so if possible prefer using explict wiring.