Mola - Fiação Automática de Feijões
Você aprendeu como declarar beans usando o elemento <bean> e injetar <bean> usando os elementos <constructor-arg> e <property> no arquivo de configuração XML.
O recipiente Spring pode autowire relacionamentos entre beans colaborativos sem usar os elementos <constructor-arg> e <property>, o que ajuda a reduzir a quantidade de configuração XML que você escreve para um grande aplicativo baseado em Spring.
Modos de fiação automática
A seguir estão os modos de autowiring, que podem ser usados para instruir o contêiner Spring a usar autowiring para injeção de dependência. Você usa o atributo autowire do elemento <bean /> para especificarautowire modo para uma definição de bean.
Sr. Não | Modo e descrição |
---|---|
1 | no Esta é a configuração padrão, o que significa sem autowiring e você deve usar uma referência explícita de bean para a fiação. Você não tem nada a fazer de especial para esta fiação. Isso é o que você já viu no capítulo Injeção de Dependências. |
2 | byName Autowiring por nome de propriedade. O Spring container examina as propriedades dos beans nos quais o atributo autowire está definido como byName no arquivo de configuração XML. Em seguida, ele tenta combinar e conectar suas propriedades aos beans definidos pelos mesmos nomes no arquivo de configuração. |
3 | por tipo Autowiring por tipo de dados de propriedade. O contêiner Spring examina as propriedades dos beans nos quais o atributo autowire está definido como byType no arquivo de configuração XML. Em seguida, ele tenta combinar e conectar uma propriedade se fortypecorresponde exatamente a um dos nomes de beans no arquivo de configuração. Se mais de um desses beans existir, uma exceção fatal será lançada. |
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. |