Spring 中 @Component 和 @Bean 区别

Spring 中 @Component 和 @Bean 区别

文章目录

  • [`Spring` 中 `@Component` 和 `@Bean` 区别](#Spring 中 @Component 和 @Bean 区别)

1. 用途不同

​ @Component 用于标识一个普通的类 ,@Bean用于配置类 里面,在方法上面声明和配置 Bean 对象

Tips:

  1. @Component 会告诉 Spring,由 @Component 所修饰的类会被作为组件类,同时 Spring 要为这个类创建 Bean
  2. 告知spring这个方法会返回一个对象,这个对象需要注册为Spring上下文(ApplicationContext)中的bean,通常方法体包含了最终产生 bean 实例的逻辑

2.使用方式不同

​ @Component 是类级别 的注解,Spring 可以扫描到配置此注解的这些类并把他们注入到 SpringIOC 容器中,@Bean 是修饰在方法上 的,表示此方法返回一个 Bean 对象注入到 SpringIOC 容器中。

Tips:但是都能够在 Spring 中注册Bean对象

@Component 使用示例

Java 复制代码
@Component
public class OrderService {
}

但是在spring中通常@Component注解通常要配合@ComponentScan实现注册的功能

java 复制代码
@ComponentScan("指定@Component注解所在的包路径")
public class AppConfig {
    
}

@Bean 使用示例

java 复制代码
@Configuration
public class AppConfig {
 
    @Bean
    public OrderService orderService1(){
        return new OrderService();
    }
}

@Bean需要在配置类 中使用,即类上需要加上@Configuration注解,然后在配置类中使用一个方法定义bean是如何创建的

3. 控制权不同

​ @Component 修饰的类是由Spring框架 统一管理和创建的,而 @Bean 允许开发人员手动控制 Bean的创建和配置

4. 灵活性不同

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

参考文献

  1. Spring中@Component注解和@Bean的区别是什么-CSDN博客

  2. Spring中@Component和@Bean的区别_spring bean和component-CSDN博客

相关推荐
喵个咪10 分钟前
GoWind CMS 拆解:给 NL2SQL 上四把锁——智能问数的安全边界
后端
喵个咪17 分钟前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
后端·go·cms
开开心心就好23 分钟前
课堂随机点名工具,绿色版免安装双击即用
java·服务器·前端·ffmpeg·音视频·perl·symfony
不像程序员的程序媛24 分钟前
springboot支持的web容器
前端·spring boot·后端
喵个咪24 分钟前
GoWind Admin 拆解:一个 Sender 接口接 39 个通知渠道
后端·架构·go
code2cat28 分钟前
Java高级篇之Socket:从建立连接到完整收发一条消息
java·开发语言
PD我是你的真爱粉37 分钟前
成熟Agent系统设计深度研究报告
java·大数据·人工智能
用户693717500138438 分钟前
当你向领导申请 AI 编程工具预算时,如果领导追问“能提效多少,有量化数据吗”,你该怎么回答?
android·后端·ios
喵个咪39 分钟前
GoWind CMS 拆解:社交分发引擎——10 平台适配器、状态闸门与自愈定时任务
后端·go·cms
lichenyang4531 小时前
技术穿刺怎么做?以企业知识库问答为例,验证风险、方案和投入
前端·后端