Sobes.tech
Junior — Middle

¿Cuál es la diferencia entre las anotaciones @Bean y @Component en Spring, y en qué casos se deben usar?

sobes.tech AI

Respuesta de la IA

La anotación @Component se utiliza para detectar y registrar automáticamente la clase como un bean de Spring mediante el escaneo de componentes. Se aplica directamente sobre la clase que debe convertirse en un bean.

La anotación @Bean se aplica sobre un método dentro de una clase marcada como de configuración (@Configuration). Este método devuelve un objeto que Spring registrará como bean.

Diferencias principales:

  • @Component — para clases que se detectan automáticamente mediante escaneo.
  • @Bean — para crear un bean manualmente en una clase de configuración.

Cuándo usar:

  • @Component — cuando la clase en sí misma es un componente y puede ser encontrada automáticamente.
  • @Bean — cuando se necesita crear un bean a partir de una clase externa o cuando se requiere una lógica más compleja para crear el objeto.

Ejemplo:

@Component
public class MyService {
    // ...
}

@Configuration
public class AppConfig {
    @Bean
    public MyRepository myRepository() {
        return new MyRepository();
    }
}