Resorte - Cableado automático de frijoles
Ha aprendido a declarar beans usando el elemento <bean> e inyectar <bean> usando los elementos <constructor-arg> y <property> en el archivo de configuración XML.
El contenedor Spring puede autowire relaciones entre beans colaborativos sin usar elementos <constructor-arg> y <property>, lo que ayuda a reducir la cantidad de configuración XML que escribe para una gran aplicación basada en Spring.
Modos de cableado automático
A continuación se muestran los modos de cableado automático, que se pueden usar para indicar al contenedor Spring que use el cableado automático para la inyección de dependencias. Utiliza el atributo autowire del elemento <bean /> para especificarautowire modo para una definición de frijol.
No Señor | Modo y descripción |
---|---|
1 | no Esta es la configuración predeterminada, lo que significa que no hay cableado automático y debe usar una referencia de bean explícita para el cableado. No tiene nada que hacer en especial para este cableado. Esto es lo que ya ha visto en el capítulo Inyección de dependencias. |
2 | por nombre Autowiring por nombre de propiedad. El contenedor Spring examina las propiedades de los beans en los que el atributo autowire está establecido en byName en el archivo de configuración XML. Luego intenta hacer coincidir y conectar sus propiedades con los beans definidos por los mismos nombres en el archivo de configuración. |
3 | por tipo Cableado automático por tipo de datos de propiedad. El contenedor Spring examina las propiedades de los beans en los que el atributo autowire está establecido en byType en el archivo de configuración XML. Luego intenta hacer coincidir y cablear una propiedad si sutypecoincide exactamente con uno de los nombres de beans en el archivo de configuración. Si existe más de uno de esos beans, se lanza una excepción fatal. |
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. |