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();
}
}