@Component 和 @Bean 的区别
1. 相同点:
- 两者的结果都是为spring容器注册Bean
- 两者都可以通过@Autowired装配
2. 不同点:
- @Component 通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中
- @Bean 注解通常是我们在标有该注解的方法中定义产生这个bean的逻辑
@Compent 作用就相当于 XML配置
@Component
public class Student {
private String name = "lkm";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Bean 需要在配置类中使用,即类上需要加上@Configuration注解
@Configuration
public class WebSocketConfig {
@Bean
public Student student1(){
return new Student2();
}
}
为什么有了@Compent,还需要@Bean呢?
如果你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component注解的,因此就不能使用自动化装配的方案了,但是我们可以使用@Bean,当然也可以使用XML配置。