Sobes.tech
Junior — Middle

Qual é a diferença entre as anotações @Bean e @Component no Spring, e em que casos devem ser usadas?

sobes.tech IA

Resposta da IA

A anotação @Component é usada para detectar e registar automaticamente a classe como um bean do Spring através da varredura de componentes (component scanning). É aplicada diretamente sobre a classe que deve tornar-se um bean.

A anotação @Bean é aplicada a um método dentro de uma classe marcada como de configuração (@Configuration). Este método devolve um objeto que o Spring irá registar como bean.

Principais diferenças:

  • @Component — para classes que são detectadas automaticamente através da varredura.
  • @Bean — para criar manualmente um bean numa classe de configuração.

Quando usar:

  • @Component — quando a classe em si é um componente que pode ser encontrado automaticamente.
  • @Bean — quando é necessário criar um bean a partir de uma classe externa ou quando é necessária uma lógica mais complexa para criar o objeto.

Exemplo:

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

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