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.
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.
@Resource
sin nombre, Spring intentará inyectar un bean que coincida con el nombre del atributo.
@Autowired
.
name
para indicar explícitamente el nombre del bean que se quiere inyectar.
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.");
}
}
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.
Para más información, consulta la documentación oficial de Spring.
Jorge García
Fullstack developer