@Component和@Bean的区别
1、两者的联系和区别
@Component 和 @Bean 是两种使⽤注解来定义bean的⽅式。
@Component(和@Service和@Repository)⽤于⾃动检测和使⽤类路径扫描⾃动配置bean。注释类和bean之间存在隐式的⼀对⼀映射(即每个类⼀个bean)。
这种⽅法对需要进⾏逻辑处理的控制⾮常有限,因为它纯粹是声明性的。
@Bean⽤于显式声明单个bean,⽽不是让Spring像上⾯那样⾃动执⾏它。它将bean的声明与类定义分离,并允许您精确地创建和配置bean。
@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
resource和autowired注解的区别public Student student(){
return new Student();
}
}
都可以使⽤@Autowired或者@Resource注解注⼊
@Autowired
Student student;
2、为什么有了@Compent,还需要@Bean呢?
如果想将第三⽅的类变成组件,你⼜没有没有源代码,也就没办法使⽤@Component进⾏⾃动配置,这种时候使⽤@Bean就⽐较合适了。不过同样的也可以通过xml⽅式来定义。
另外@Bean注解的⽅法返回值是对象,可以在⽅法中为对象设置属性。
另外⼤家可以了解⼀下Spring的Starter机制,就是通过@Bean注解来定义bean。
可以搭配@ConditionalOnMissingBean注解 @ConditionalOnMissingClass注解,如果本项⽬中没有定义该类型的bean则会⽣效。避免在某个项⽬中定义或者通过congfig注解来声明⼤量重复的bean。
参考⽂章

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。