Volver a la página principal
miércoles 2 octubre 2024
10

Cómo inyectar dependencias con @Resource en Spring Boot

La anotación @Resource en Spring Boot se utiliza para inyectar dependencias en un bean de manera similar a @Autowired. Sin embargo, @Resource permite una mayor personalización al permitir la inyección de beans según su nombre. Es parte de javax.annotation y proporciona un método estándar de Java para la inyección de dependencias, facilitando la integración con otros frameworks que no sean específicos de Spring.

¿Cómo funciona @Resource en Spring Boot?

La anotación @Resource se puede aplicar a campos, setters y métodos de un bean. A diferencia de @Autowired, que selecciona las dependencias por tipo, @Resource se centra en el nombre del bean por defecto, aunque también se puede configurar para buscar por tipo.

  • Si solo se especifica la anotación @Resource sin nombre, Spring intentará inyectar un bean que coincida con el nombre del atributo.
  • Si el nombre no se encuentra, buscará por tipo similar a @Autowired.
  • Además, se puede personalizar usando el atributo name para indicar explícitamente el nombre del bean que se quiere inyectar.

Ejemplo de uso de @Resource en Spring Boot

import javax.annotation.Resource;
import org.springframework.stereotype.Component;

@Component
public class MiServicio {

    @Resource(name = "miRepositorio")
    private Repositorio repositorio;

    public void ejecutarServicio() {
        System.out.println("Iniciando servicio...");
        repositorio.realizarOperacion();
    }
}
import org.springframework.stereotype.Repository;

@Repository("miRepositorio")
public class Repositorio {
    
    public void realizarOperacion() {
        System.out.println("Operación realizada en el repositorio.");
    }
}

Explicación:

1. El atributo repositorio de la clase MiServicio se inyecta usando @Resource(name = "miRepositorio").

2. La anotación especifica el nombre exacto del bean Repositorio que se debe inyectar, permitiendo un control más fino en la inyección de dependencias.

3. Al ejecutar ejecutarServicio(), Spring Boot inyecta automáticamente el bean miRepositorio en repositorio, y el método realizarOperacion() se llama sin problemas.

Referencia a la documentación oficial

Para más información, consulta la documentación oficial de Spring.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer