1 概述

@Component:表名一个类会作为组件类,并告知spring要为这个类创建bean

@Bean:告知spring这个方法会返回一个对象,这个对象需要注册为Spring上下文中的bean,通常方法体包含了最终产生bean实例的逻辑

2 相同点与不同点

相同点:都是为spring注册bean对象

不同点:

1)作用对象不同:

@Component注解作用于类

@Bean作用于方法

2)使用方法不同:

@Component注解直接标注在类声明上即可
@Component public class OrderService { }
但是在spring中通常@Component注解通常要配合@ComponentScan注解实现注册的功能
@ComponentScan("指定@Component注解所在的包路径") public class AppConfig { }
@Bean需要在配置类中使用,即类上需要加上@Configuration注解,然后在配置类中使用一个方法定义bean是如何创建的
@Configuration public class AppConfig { @Bean public OrderService
orderService1(){ return new OrderService(); } }
3)实现不同

@Component注解通常是通过类路径扫描来自动侦测以及自动装配到spring容器中(使用Component注解定义要扫描的路径)

@Bean注解通常是在标有@Configuration注解的方法中定义产生的这个bean,默认情况下,它将使用方法的名称作为bean的id

4)灵活性不同

@Bean注解比@Component注解灵活,我们可以按需注册需要的bean,很多场景我们只能通过@Bean来注册bean,比如引入第三方库中农的类需要装配到spring容器中。

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信