注解中@Component和@Bean的区别
两者的⽬的是⼀样的,都是注册bean到Spring容器中
1、@Component注解表明⼀个类会作为组件类,并告知Spring要为这个类创建bean。
2、@Bean注解告诉Spring这个⽅法将会返回⼀个对象,这个对象要注册为Spring应⽤上下⽂中的bean。通常⽅法体中包含了最终产⽣bean实例的逻辑。
区别:
1、@Component(@Controller、@Service、@Repository)通常是通过类路径扫描来⾃动侦测以及⾃动装配到Spring容器中。
2、⽽@Bean注解通常是我们在标有该注解的⽅法中定义产⽣这个bean的逻辑。
3、@Component 作⽤于类,@Bean作⽤于⽅法
Spring帮助我们管理Bean分为两个部分
⼀个是注册Bean(@Component , @Repository , @ Controller , @Service , @Configration),
⼀个装配Bean(@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的⽅式获取Bean)。
完成这两个动作有三种⽅式,⼀种是使⽤⾃动配置的⽅式、⼀种是使⽤JavaConfig的⽅式,⼀种就是使⽤XML配置的⽅式。
@Compent 作⽤就相当于 XML配置
@Component
public class Student {
private String name ="lkm";
public String getName(){
return name;
}
resource和autowired注解的区别public void setName(String name){
this.name = name;
}
}
@Bean 需要在配置类中使⽤,即类上需要加上@Configuration注解
@Configuration
public class WebSocketConfig {
@Bean
public Student student(){
return new Student();
}
}
两者都可以通过@Autowired装配
@Autowired
Student student;
那为什么有了@Compent,还需要@Bean呢?
如果你想要将第三⽅库中的组件装配到你的应⽤中,在这种情况下,是没有办法在它的类上添加@Component注解的,因此就不能使⽤⾃动化装配的⽅案了,但是我们可以使⽤@Bean,当然也可以使⽤XML配置。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论