Primavera - Cablaggio automatico dei fagioli

Hai imparato come dichiarare i bean utilizzando l'elemento <bean> e iniettare <bean> utilizzando gli elementi <constructor-arg> e <property> nel file di configurazione XML.

Il contenitore Spring può autowire relazioni tra i bean che collaborano senza utilizzare gli elementi <constructor-arg> e <property>, il che aiuta a ridurre la quantità di configurazione XML che scrivi per una grande applicazione basata su Spring.

Modalità di cablaggio automatico

Di seguito sono riportate le modalità di autowiring, che possono essere utilizzate per indicare al contenitore Spring di utilizzare l'autowiring per l'inserimento delle dipendenze. Si utilizza l'attributo autowire dell'elemento <bean /> per specificareautowire modalità per una definizione di bean.

Suor n Modalità e descrizione
1 no

Questa è l'impostazione predefinita che significa nessun cablaggio automatico e dovresti usare un riferimento esplicito al bean per il cablaggio. Non hai niente da fare di speciale per questo cablaggio. Questo è ciò che hai già visto nel capitolo Dependency Injection.

2 per nome

Autowiring per nome proprietà. Il contenitore Spring esamina le proprietà dei bean su cui l' attributo autowire è impostato su byName nel file di configurazione XML. Quindi cerca di abbinare e collegare le sue proprietà con i bean definiti con gli stessi nomi nel file di configurazione.

3 byType

Autowiring per tipo di dati della proprietà. Il contenitore Spring esamina le proprietà dei bean su cui l' attributo autowire è impostato su byType nel file di configurazione XML. Quindi cerca di abbinare e collegare una proprietà se ètypecorrisponde esattamente a uno dei nomi dei bean nel file di configurazione. Se esiste più di uno di questi bean, viene generata un'eccezione irreversibile.

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.