A diferença entre @Component e @Bean
O Spring nos ajuda a gerenciar o Bean em duas partes: uma é Bean de registro e uma Bean de montagem.
Existem três maneiras de realizar essas duas ações, uma é usar a configuração automática, uma é usar o JavaConfig e a outra é usar a configuração XML.
@Compent é equivalente à configuração XML
@Component
public class Student {
private String name = "lkm";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
O @Bean precisa ser usado na classe de configuração, ou seja, a classe precisa ser anotada com @Configuration
@Configuration
public class WebSocketConfig {
@Bean
public Student student(){
return new Student();
}
}
Ambos podem ser montados via @Autowired
@Autowired
Student student;
Por que você precisa do @Bean quando possui o @Compent?
Se você deseja montar os componentes na biblioteca de terceiros em seu aplicativo, nesse caso, não há como adicionar a anotação @Component à sua classe, portanto, você não pode usar a solução de montagem automatizada, mas nós Você pode usar o @Bean, é claro, também pode usar a configuração XML.
Por que existe uma anotação @Bean na primavera?
As anotações se enquadram em duas categorias
1. Um é usar o Bean, ou seja, o Bean que foi configurado no arquivo xml para concluir a montagem de atributos e métodos, como @Autowired, @Resource, você pode passar porTYPE (@Autowired), byNAME (@Resource ) Maneira de obter Bean;
2. Um tipo é Bean registrado, @Component, @Repository, @Controller, @Service, @Configration.Essas anotações são todos os objetos que você deseja instanciar em um Bean, colocados no contêiner IoC, quando desejar usar , Ele funcionará com @Autowired e @Resource acima para montar perfeitamente objetos, propriedades e métodos.
- O @Bean indica claramente um método, qual método - um método de gerar um bean e entregue ao gerenciamento de contêineres do Spring; a partir disso, entendemos por que o @Bean é colocado na anotação do método, porque é muito Diga explicitamente ao método anotado que você gera um Bean para mim, entregue-o ao contêiner Spring e deixe o resto para você.
- Lembre-se, se @Bean for colocado no método, é um Bean.