一文掌握Spring 中 @Component 和 @Bean 区别(最新推荐)

 更新时间:2024年04月01日 09:41:41   作者:枫飘长安  
​@Component 用于标识一个普通的类,@Bean用于配置类里面,在方法上面声明和配置 Bean 对象,这篇文章主要介绍了Spring 中 @Component 和 @Bean 区别(最新推荐),需要的朋友可以参考下

Spring@Component@Bean 区别

1. 用途不同

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

Tips

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

2.使用方式不同

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

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

@Component 使用示例

@Component
public class OrderService {
}

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

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

@Bean 使用示例

@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容器中。

参考文献

Spring中@Component注解和@Bean的区别是什么

Spring中@Component和@Bean的区别_spring bean和component

到此这篇关于Spring 中 @Component 和 @Bean 区别的文章就介绍到这了,更多相关Spring @Component 和 @Bean 区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA中已配置阿里镜像但maven无法下载jar包的问题及解决方法

    IDEA中已配置阿里镜像但maven无法下载jar包的问题及解决方法

    这篇文章主要介绍了IDEA中已配置阿里镜像但maven无法下载jar包的问题,本文给大家分享解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 使用@Validated注解异常信息的处理方式

    使用@Validated注解异常信息的处理方式

    本文优化Spring @Validated参数校验异常信息,通过MethodArgumentNotValidException和BindingResult提取关键错误,使用@RestControllerAdvice实现统一异常处理,提升错误信息简洁性及代码可维护性
    2025-07-07
  • java获取项目路径的几种实现方式

    java获取项目路径的几种实现方式

    本文介绍了在前端和后端获取当前项目路径的常用方法,包括获取工程根路径、计算机域名和IP,以及获取Tomcat下的真实路径,并建议将路径设置为全局变量以便管理,适用于文件上传等场景
    2025-10-10
  • SpringBoot整合Zookeeper详细教程

    SpringBoot整合Zookeeper详细教程

    Curator是Netflix公司开源的⼀套zookeeper客户端框架,Curator是对Zookeeper⽀持最好的客户端框架。Curator封装了⼤部分Zookeeper的功能,⽐如Leader选举、分布式锁等,减少了技术⼈员在使⽤Zookeeper时的底层细节开发⼯作
    2022-12-12
  • nacos服务注册命名空间指定方式

    nacos服务注册命名空间指定方式

    文章介绍了Nacos服务注册命名空间的用途,以及如何创建和指定命名空间,命名空间用于隔离不同项目的服务和配置,避免冲突,通过在配置文件中指定命名空间ID,服务会注册到相应的命名空间中,这样可以更好地管理不同环境下的配置文件
    2024-12-12
  • SpringBoot实现签到打卡功能的五种方案

    SpringBoot实现签到打卡功能的五种方案

    在现代应用开发中,签到打卡功能广泛应用于企业考勤管理、在线教育、社区运营等多个领域,它不仅是一种记录用户行为的方式,也是提升用户粘性和活跃度的重要手段,本文将介绍5种签到打卡的实现方案,需要的朋友可以参考下
    2025-06-06
  • kafka消费者kafka-console-consumer接收不到数据的解决

    kafka消费者kafka-console-consumer接收不到数据的解决

    这篇文章主要介绍了kafka消费者kafka-console-consumer接收不到数据的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java自带的四种线程池实例详解

    java自带的四种线程池实例详解

    java线程的创建非常昂贵,需要JVM和OS(操作系统)互相配合完成大量的工作,下面这篇文章主要给大家介绍了关于java自带的四种线程池的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Java中为何要使用ArrayList

    Java中为何要使用ArrayList

    这篇文章主要介绍了Java中为何要使用ArrayList,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • 关于maven本地仓库的配置方式

    关于maven本地仓库的配置方式

    这篇文章主要介绍了关于maven本地仓库的配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06

最新评论