@Component
es una anotación de Spring que se utiliza para marcar una clase como un componente, lo que significa que Spring la gestionará como un bean y la registrará en el contenedor de la aplicación. El contenedor de Spring puede detectar estas clases automáticamente a través del escaneo de componentes, que se realiza de manera predeterminada en el paquete base de la aplicación.
La anotación @Component
forma parte de un conjunto de anotaciones estereotípicas en Spring, que incluyen:
@Service
: se utiliza para servicios.
@Repository
: se utiliza para interactuar con bases de datos.
@Controller
: se usa en controladores MVC.
Aunque @Component
se puede usar para cualquier clase, las otras anotaciones proporcionan semántica adicional para roles específicos, por lo que es conveniente utilizarlas cuando se ajustan al propósito de la clase.
import org.springframework.stereotype.Component;
@Component
public class MiComponente {
public String obtenerMensaje() {
return "Componente genérico funcionando.";
}
}
En este ejemplo, @Component
indica a Spring que debe registrar MiComponente
como un bean dentro del contenedor. Ahora MiComponente
puede ser inyectado en otras partes de la aplicación usando @Autowired
.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MiServicio {
private final MiComponente miComponente;
@Autowired
public MiServicio(MiComponente miComponente) {
this.miComponente = miComponente;
}
public String mostrarMensaje() {
return miComponente.obtenerMensaje();
}
}
En este caso:
MiServicio
es un bean registrado con @Service
.
MiComponente
se inyecta en MiServicio
mediante el constructor con @Autowired
, gracias a que fue declarado como un componente con @Component
.
@Component
con escaneo personalizado
Por defecto, Spring Boot escanea el paquete principal del proyecto para encontrar componentes. Si quieres personalizar el escaneo, se puede usar la anotación @ComponentScan
:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = "com.ejemplo.componentes")
public class ConfiguracionPersonalizada {
}
Esto permite que Spring escanee un paquete específico (com.ejemplo.componentes
) para detectar componentes.
Para más información sobre @Component
, consulta la documentación oficial de Spring.
Jorge García
Fullstack developer