Spring最核心的注解@Bean本质用法及说明

 更新时间:2026年05月13日 09:45:15   作者:tuokuac  
文章解释了`@Bean`注解的本质以及如何在Spring中使用它来管理Bean, `Bean`注解告诉Spring执行该方法并把返回值作为Bean进行容器管理, 春看到`@Bean`会自动调用方法获取返回值,将返回的对象放进容器中管理, 通过这种方式,其他类可以直接注入使用这些Bean.

Spring 最核心的注解@Bean本质

直接给你一句话戳穿本质,马上彻底懂

答案:

这个方法本身不是 Bean,方法执行后返回的对象才是 Bean!

Spring 会把这个返回的对象放进容器里管理!

用最通俗的话讲@Bean原理

看这段代码:

@Configuration // 配置类
public class MesaageConfig {

    // 加了 @Bean 的方法
    @Bean
    public MessageConverter messageConverter() {
        // 1. 自己 new 对象
        Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter();
        // 2. 自己配置对象
        converter.setCreateMessageIds(true);
        // 3. 返回对象
        return converter; 
    }
}

Spring 看到@Bean会做什么?

Spring 会自动调用这个方法,拿到返回值,然后:

  • 把返回的对象放进 Spring 容器
  • 给这个 Bean 起名 = 方法名 messageConverter
  • 以后别人想用,直接注入就行

总结:

@Bean = 告诉 Spring:执行我这个方法,把返回的对象给我当成 Bean 管理!

  • 方法 = 造 Bean 的工厂
  • 返回值 = 真正的 Bean

问:它不是方法吗?怎么成 Bean 了?

画个等号你就懂了:

@Bean
public 消息 造消息的方法() {
    造一个消息...
    return 消息; // Spring 拿走这个「消息」当 Bean
}
  • 方法:只是生产 Bean 的流水线
  • 返回的对象:才是商品(Bean)
  • @Bean:就是贴在流水线上的标签,告诉 Spring 来拿货

这个 Bean 怎么用?

其他类里直接注入就能用:

@Service
public class MessageService {

    // 直接注入!Spring 自动把上面方法返回的对象给你
    @Autowired
    private MessageConverter messageConverter;
}

@Bean和 类注解(@Service/@Component)区别

方式注解适用场景
自己写的类@Service @Component类是你写的,直接加注解
别人写的类(Jackson、RabbitTemplate…)@Bean类不是你写的,你需要new 出来 + 配置,交给 Spring

你的场景:

Jackson2JsonMessageConverter别人写的类,你需要:

  • new 出来
  • 配置 setCreateMessageIds(true)
  • 交给 Spring

→ 必须用 @Bean

终极总结(背下来)

  • 加了 @Bean 的方法 = Spring 会自动调用
  • 方法的返回值 = 放进容器的 Bean 对象
  • 方法名 = Bean 的名字
  • 别人可以直接注入使用

最直白的一句:

你写的是方法,但 Spring 要的是你方法 return 出来的那个对象!

再给你对应一下:

  • @Configuration:造 Bean 的工厂类
  • @Bean:工厂里的加工方法
  • return xxx:加工好的产品 → Bean

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java实现文件夹上传功能实例代码(SpringBoot框架)

    java实现文件夹上传功能实例代码(SpringBoot框架)

    在web项目中上传文件夹现在已经成为了一个主流的需求,下面这篇文章主要给大家介绍了关于java实现文件夹上传功能(springBoot框架)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • springKafka生产者、消费者,数据发送/接收方式

    springKafka生产者、消费者,数据发送/接收方式

    这篇文章主要介绍了springKafka生产者、消费者,数据发送/接收方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-09-09
  • Java序列化和反序列化_动力节点Java学院整理

    Java序列化和反序列化_动力节点Java学院整理

    把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化。接下来通过本文给大家介绍Java序列化和反序列化及主要的两种用途,感兴趣的的友参考下吧
    2017-05-05
  • 如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

    如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Sock

    这篇文章主要介绍了解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • SpringSecurity整合JWT的使用示例

    SpringSecurity整合JWT的使用示例

    本文主要介绍了SpringSecurity整合JWT的使用示例,整合Spring Security和JWT,可以使我们的应用程序更加安全和高效,感兴趣的可以了解一下
    2023-11-11
  • java web监听器统计在线用户及人数

    java web监听器统计在线用户及人数

    本文主要介绍了java web监听器统计在线用户及人数的方法解析。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • 详解Spring Security 简单配置

    详解Spring Security 简单配置

    本篇文章主要介绍了详解Spring Security 简单配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • java普通类如何转javafx程序

    java普通类如何转javafx程序

    这篇文章主要介绍了java普通类如何转javafx程序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Spring boot Mybatis 整合(完整版)

    Spring boot Mybatis 整合(完整版)

    本文是一篇比较完整的版本通过图文并茂的形式给大家介绍了Spring boot Mybatis 整合过程,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-09-09
  • Java中Collection与Collections的区别详解

    Java中Collection与Collections的区别详解

    这篇文章主要为大家详细介绍了Java中Collection与Collections的区别,文中有详细的代码示例,具有一定的参考价值,感兴趣的同学可以参考一下
    2023-06-06

最新评论