游乐游手机版
首页/编程语言/文章详情

Spring核心注解@Bean的本质用法与详细说明

时间:2026-08-16 14:51
@Bean注解的本质:方法执行后返回的对象被Spring自动放入容器管理,方法名作为Bean名称,返回值作为Bean实例。适用于第三方类等非自写类需手动实例化和配置的场景。

Spring 最核心的注解@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:工厂类里的 Bean 创建方法
  • return xxx:加工完成的产品 → Bean
来源:https://www.jb51.net/program/3637944kj.htm
上一篇Godaddy如何配置ThinkPHP伪静态规则与设置方法 下一篇Go语言连接金仓数据库的环境搭建与连接管理指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Python应用打包与部署入门教程:核心概念、操作步骤与结果验证
编程语言 · 2026-10-01

Python应用打包与部署入门教程:核心概念、操作步骤与结果验证

从 Python 应用打包的基本概念入手,介绍项目环境准备、依赖管理、构建发布包、安装部署以及运行结果验证,并梳理常见打包失败与部署问题,帮助初学者完成从源码到可部署应用的完整流程。

Python CLI 开发避坑指南:从环境配置到参数解析的实战排查
编程语言 · 2026-10-01

Python CLI 开发避坑指南:从环境配置到参数解析的实战排查

本文聚焦 Python 命令行工具(CLI)开发中最高频的故障点,按执行链路梳理从环境配置、参数解析、路径处理到异常调试的完整排查流程。通过具体代码示例与终端输出对照,提供可复现的修复方案,帮助开发者快速定位 ModuleNotFoundError、参数校验失败及跨平台兼容性问题,构建更健壮的命令行

Python CLI 开发:从参数解析到工程化发布的完整路径
编程语言 · 2026-10-01

Python CLI 开发:从参数解析到工程化发布的完整路径

本文以 Python 命令行工具开发为切入点,从项目结构搭建与虚拟环境配置入手,深入讲解 argparse 参数解析与子命令设计。通过一个完整的日志分析工具案例,演示输入校验、错误处理与异常捕获的最佳实践,最后覆盖打包发布流程与常见排查技巧,帮助开发者构建健壮、易用的 CLI 应用。

Python 模块与包的工程化实践:结构、依赖与排错指南
编程语言 · 2026-10-01

Python 模块与包的工程化实践:结构、依赖与排错指南

本文从项目目录规范与模块导入机制切入,详细阐述虚拟环境的配置、第三方包的管理策略以及完整案例的模块化拆分方法。通过具体代码示例展示如何构建高内聚低耦合的代码结构,并针对 ModuleNotFoundError、ImportError 及依赖冲突等常见工程问题提供系统化的排查与解决方案,帮助开发者建立

Python 函数参数与返回值:从环境搭建到实战避坑
编程语言 · 2026-10-01

Python 函数参数与返回值:从环境搭建到实战避坑

本文从搭建 Python 运行环境入手,详细解析函数定义、参数传递机制及返回值处理。通过电商订单计算的完整案例,展示如何模块化组织业务逻辑,并针对参数数量、作用域及返回值缺失等常见错误提供排查方案,帮助开发者写出健壮且可维护的代码。