@Component和@Bean的区别

最近学习spring的时候,一直搞不清这两个的区别,网上写的是在太官方了,小白太难了。于是自己整理一下。

首先,相同点,这两者目的都是注册bean到spring中因此都可以通过@Autowried装配,比如:

@Autowired

private Student student;

先看看两者的作用:

@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。

@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑(啥意思下面解释)。

于是区别来了:①我们知道Component,Controller,Service,Repository都是可以起到相同作用的,都是在类上方添加注解,而@Bean是在配置类中使用,也就是加了@Configuration的类里面的方法上面使用

②@Component四兄弟是通过componentscan由spring容器来找到类路径自动装配到容器中@Bean呢是我们通过自定义方法产生的一个产生bean实例的逻辑。常见用法:人家的源码我们没法改,所以没办法在源码的类上加@Component。于是,我们可以通过方法上加@Bean注解,把第三方的类放入容器,比如把jbdc里的connection对象放入容器里:

@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;
   }
}

③@Bean方法里面如果跟参数,这个参数是会根据括号里的对象类型从容器里面找这个对象。

 @Bean(name = "connection")
    public Connection getConnection(StudentService studentService){
        System.out.println(studentService);
        studentService.findStudentById(1);

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值