¿Te gustaría aprender Java Empresarial desde cero?Tenemos los Diplomados que necesitas.¡Haz clic aquí!

Spring @Autowired es una de las anotaciones más habituales cuando trabajamos con Spring Framework ya que se trata de la anotación que permite inyectar unas dependencias con otras dentro de Spring .

Spring @Autowired y su funcionamiento

Normalmente estamos acostumbrados a usar @AutoWired a nivel de la propiedad que deseamos inyectar. Spring funciona como una mega factoria de objetos. Cada clase se registra para instanciar objetos con alguna de las anotaciones @Controller ,@Service ,@repository o @RestController.

Spring inyeccion dependencia

Una vez que los objetos estan creados la anotación Spring @Autowired se encarga de construir las ligazones entre los distintos elementos

Spring @Autowired

Por ejemplo este caso es habitual cuando tenemos un servicio y un repositorio. Vamos a verlo usando Spring Boot

package com.arquitecturajava.wired;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

@Repository
public class LibroRepository {

  public List<Libro> buscarTodos() {
    List<Libro> lista= new ArrayList<Libro>();
    lista.add(new Libro ("1","java","pedro"));
    lista.add(new Libro ("2","python","gema"));
    
    return lista;
    
  }
  
}

Como podemos ver tenemos el LibroRepository como primer componente y le queremos enlazar desde un Servicio.

package com.arquitecturajava.wired;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LibroRestService {

  @Autowired
  LibroRepository repositorio;
  @RequestMapping("/libros")
  public List<Libro> buscarTodos() {
    
    return repositorio.buscarTodos();
    
  }
}

Ahora tenemos los dos elementos enlazados y un ServicioREST publicado por lo tanto si ejecutamos la aplicación de Spring Boot dispondremos de una Url con un listado de Libros disponible

Spring @Autowrired rest

Spring Testing y Wiring

Hoy por hoy las metodologías de TDD cada día se usan más y aunque este uso de la anotacion @Autowired es el más habitual suele ser más práctico y cómodo para el manejo de test realizar un @Autowired a nivel de constructores por lo tanto el código quedaría así:

package com.arquitecturajava.wired;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LibroRestService {

  
  LibroRepository repositorio;
  
  @Autowired 
  public LibroRestService(LibroRepository repositorio) {
    
    this.repositorio=repositorio;
    
  }
  @RequestMapping("/libros")
  public List<Libro> buscarTodos() {
    
    return repositorio.buscarTodos();
    
  }
}

De esta manera el código queda más limpio , flexible y más sencillo de usar cuando utilicemos Test Driven Development.

Te esperamos en los próximos artículos en donde hablaremos mas acerca de estos temas que hoy en día son de importancia e interés en el mundo de la tecnología.

¿Te gustaría aprender Java Empresarial desde cero?
Tenemos los Diplomados que necesitas.¡Haz clic aquí!

About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax