Spring 最核心的注解@Bean本质

Spring 最核心的注解 @Bean 本质

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

答案:

这个方法本身不是 Bean,方法执行后返回的对象才是 Bean!
Spring 会把这个返回的对象放进容器里管理!


一、用最通俗的话讲 @Bean 原理

看这段代码:

java 复制代码
@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 会自动调用这个方法 ,拿到返回值,然后:

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

总结:

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

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

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

画个等号你就懂了:

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

三、这个 Bean 怎么用?

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

java 复制代码
@Service
public class MessageService {

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

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

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

你的场景:

Jackson2JsonMessageConverter别人写的类,你需要:

  1. new 出来
  2. 配置 setCreateMessageIds(true)
  3. 交给 Spring

必须用 @Bean


五、终极总结(背下来)

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

最直白的一句:

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


再给你对应一下:

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

需要我给你演示一下怎么在别的类里注入这个 MessageConverter Bean 吗?

相关推荐
kfaino11 分钟前
码农的AI翻身(三)你好,我叫 Embedding
后端·ai编程
葫芦和十三40 分钟前
图解 MongoDB 18|复制集拓扑:Primary、Secondary 和 Arbiter 的分工
后端·mongodb·面试
爱勇宝44 分钟前
大多数人不是在使用 AI 赚钱,而是在帮 AI 公司赚钱
前端·后端·程序员
程序员cxuan4 小时前
虽迟但到!GPT-5.6 终于来了!
人工智能·后端·程序员
IT_陈寒6 小时前
React的这个渲染问题连官方文档都没说清楚
前端·人工智能·后端
狼爷7 小时前
吃透 Java Function 接口,搞定 99% 的 Stream 场景
java·函数式编程
葫芦和十三7 小时前
图解 MongoDB 15|journal 与持久化:写入怎么不丢,崩溃怎么恢复
后端·mongodb·面试
葫芦和十三7 小时前
图解 MongoDB 16|压缩:snappy、zstd 和 zlib 的取舍
后端·mongodb·面试
苍何7 小时前
终于找到免费开源TTS模型,克隆声音不要钱,本地电脑也能跑
后端
用户593608741407 小时前
Spring AI 集成 DeepSeek 原生供应商并实现think模式
后端