一、相同点
注册bean到spring中,可以通过@Autowired装配。
二、区别
1、@Component
(1)作用于类,spring为该类创建bean。
(2)可以通过value或name指定组件的名称,注入依赖时可用该名称引用组件,如
@Component("name")或@Component(value="name")
(3)默认扫描指定包及子包下的组件,可在启动类上添加@ComponentScan("包名")指定要扫描的包路径。
2、@Bean
(1)作用于@Configuration标注的配置类中的方法,该方法会返回一个对象,spring将该对象创建bean。
(2) @Bean(name = "connection")
(3)引用第三方库中的类需要装配到Spring中时,无法在源码加@Component,只能通过@Bean注册bean,如:
@Bean
public Connection getConnection(){
try {
Class.forName("com.mysql.cj.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql:///mysql", "root", "root");
} catch (Exception exception) {
return null;
}
}