Volver a la página principal
martes 1 octubre 2024
32

Cómo crear componentes con @Component en Spring Boot

¿Qué es @Component en Spring Boot?

@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.

Ejemplos de uso de @Component en Spring Boot

1. Definir una clase como un componente genérico

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.

2. Inyectar un componente en otra clase

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.

3. Usar @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.

Referencia oficial

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

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer