[{"createTime":1735734952000,"id":1,"img":"hwy_ms_500_252.jpeg","link":"https://activity.huaweicloud.com/cps.html?fromacct=261f35b6-af54-4511-a2ca-910fa15905d1&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905","name":"华为云秒杀","status":9,"txt":"华为云38元秒杀","type":1,"updateTime":1735747411000,"userId":3},{"createTime":1736173885000,"id":2,"img":"txy_480_300.png","link":"https://cloud.tencent.com/act/cps/redirect?redirect=1077&cps_key=edb15096bfff75effaaa8c8bb66138bd&from=console","name":"腾讯云秒杀","status":9,"txt":"腾讯云限量秒杀","type":1,"updateTime":1736173885000,"userId":3},{"createTime":1736177492000,"id":3,"img":"aly_251_140.png","link":"https://www.aliyun.com/minisite/goods?userCode=pwp8kmv3","memo":"","name":"阿里云","status":9,"txt":"阿里云2折起","type":1,"updateTime":1736177492000,"userId":3},{"createTime":1735660800000,"id":4,"img":"vultr_560_300.png","link":"https://www.vultr.com/?ref=9603742-8H","name":"Vultr","status":9,"txt":"Vultr送$100","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":5,"img":"jdy_663_320.jpg","link":"https://3.cn/2ay1-e5t","name":"京东云","status":9,"txt":"京东云特惠专区","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":6,"img":"new_ads.png","link":"https://www.iodraw.com/ads","name":"发布广告","status":9,"txt":"发布广告","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":7,"img":"yun_910_50.png","link":"https://activity.huaweicloud.com/discount_area_v5/index.html?fromacct=261f35b6-af54-4511-a2ca-910fa15905d1&utm_source=aXhpYW95YW5nOA===&utm_medium=cps&utm_campaign=201905","name":"底部","status":9,"txt":"高性能云服务器2折起","type":2,"updateTime":1735660800000,"userId":3}]
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容器中。