in

Autowiring en Spring – javatpoint

La función de cableado automático del marco de primavera le permite inyectar la dependencia del objeto implícitamente. Utiliza internamente inyección de setter o constructor.

El cableado automático no se puede utilizar para inyectar valores primitivos y de cadena. Funciona solo con referencia.


Ventaja del cableado automático

Requiere el menos código porque no necesitamos escribir el código para inyectar la dependencia explícitamente.


Desventaja del cableado automático

Sin control de programador.

No se puede usar para valores primitivos y de cadena.


Modos de cableado automático

Hay muchos modos de cableado automático:

No. Modo Descripción
1) no Es el modo de cableado automático predeterminado. Significa que no hay cableado automático por defecto.
2) por nombre El modo byName inyecta la dependencia del objeto según el nombre del bean. En tal caso, el nombre de la propiedad y el nombre del bean deben ser iguales. Llama internamente al método setter.
3) por tipo El modo byType inyecta la dependencia del objeto según el tipo. Por lo tanto, el nombre de la propiedad y el nombre del bean pueden ser diferentes. Llama internamente al método setter.
4) constructor El modo constructor inyecta la dependencia llamando al constructor de la clase. Llama al constructor que tiene una gran cantidad de parámetros.
5) detección automática Está en desuso desde Spring 3.

Ejemplo de cableado automático

Veamos el código simple para usar el cableado automático en primavera. Debe utilizar el atributo autowire del elemento bean para aplicar los modos de autowire.


Veamos el ejemplo completo de cableado automático en primavera. Para crear este ejemplo, hemos creado 4 archivos.

  1. B.java
  2. A.java
  3. applicationContext.xml
  4. Test.java

B.java

Esta clase solo contiene un constructor y un método.

paquete org.sssit; public class B {B () {System.out.println («b se crea»);} void print () {System.out.println («hola b»);}}

A.java

Esta clase contiene la referencia de la clase B y el constructor y el método.

paquete org.sssit; clase pública A {B b; A () {System.out.println («se crea a»);} public B getB () {return b; } public void setB (B b) {this.b = b; } void print () {System.out.println («hola a»);} void display () {print (); b.print (); }}

applicationContext.xml

xml version = "1.0" encoding = "UTF-8"?>

Test.java

Esta clase obtiene el bean del archivo applicationContext.xml y llama al método de visualización.

paquete org.sssit; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; Prueba de clase pública {public static void main (String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext («applicationContext.xml»); A a = context.getBean («a», A.class); una pantalla(); }}

Producción:

b is created
a is created
hello a
hello b

1) modo de cableado automático byName

En el caso del modo de cableado automático byName, la identificación del bean y el nombre de referencia deben ser iguales.

Utiliza internamente inyección de incubadora.


Pero, si cambia el nombre del bean, no inyectará la dependencia.

Veamos el código donde estamos cambiando el nombre del bean de b a b1.



2) modo de cableado automático por tipo

En el caso del modo de cableado automático byType, la identificación del bean y el nombre de referencia pueden ser diferentes. Pero debe haber solo un bean de un tipo.

Utiliza internamente inyección de incubadora.


En este caso, funciona bien porque ha creado una instancia de tipo B. No importa que tenga un nombre de bean diferente al de referencia.

Pero, si tiene varios beans de un tipo, no funcionará y lanzará una excepción.

Veamos el código donde hay muchos beans de tipo B.


En tal caso, arrojará una excepción.


3) modo de cableado automático del constructor

En el caso del modo de cableado automático del constructor, el contenedor de resorte inyecta la dependencia del constructor parametrizado más alto.

Si tiene 3 constructores en una clase, zero-arg, one-arg y two-arg, la inyección se realizará llamando al constructor de dos argumentos.



4) sin modo de cableado automático

En caso de que no haya modo de cableado automático, el contenedor de resorte no inyecta la dependencia mediante el cableado automático.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Python – Agregar elementos de lista

Java – Clase de cadenas