@Configuration类中定义的@Bean方法

没有显式调用 这些 @Bean 方法,但 Spring Boot 在启动时会自动调用它们 ,并注册到 Spring 容器中。这是 Spring 的 自动配置机制Bean 生命周期管理 的核心特性。


✅ 关键点:Spring 的 IoC 容器自动管理 Bean

1. @Configuration 注解
java 复制代码
@Configuration
public class FanoutConfig {
  • 告诉 Spring:这是一个配置类 ,里面定义的 @Bean 方法会被 Spring 容器管理。
2. @Bean 注解
java 复制代码
@Bean
public Queue fanoutQueue1() {
    return new Queue("fanout.queue1");
}
  • 每个 @Bean 方法返回的对象(如 QueueFanoutExchangeBinding)都会被 Spring 自动注册为 Bean
  • 你不需要手动调用这些方法,Spring 会在启动时自动执行它们。
3. RabbitMQ 的自动声明机制

Spring AMQP 提供了 RabbitAdmin,它会在 Spring 容器启动时:

  • 扫描所有类型为 QueueExchangeBinding 的 Bean;
  • 自动调用 RabbitMQ 的 API 去创建它们(如果它们不存在)。

🔍 举个例子:Spring 启动时发生了什么?

步骤 发生了什么
1 Spring Boot 启动
2 扫描到 @ConfigurationFanoutConfig
3 执行所有 @Bean 方法,创建 QueueFanoutExchangeBinding 实例
4 RabbitAdmin 自动将这些声明发送到 RabbitMQ 服务器
5 RabbitMQ 中就会创建出 hmall.fanout 交换机和两个队列

✅ 总结一句话:

你不需要手动调用这些方法,Spring 会自动执行它们,并通过 RabbitAdmin 把队列和交换机声明到 RabbitMQ 中。


相关推荐
老白干14 分钟前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
圆山猫7 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
城管不管7 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
IT小白杨7 小时前
从环境制备到自动化工作流:多账号运营的工程化架构拆解
java·经验分享·自动化·安全架构·指纹浏览器
豆瓣鸡8 小时前
算法日记 - Day3
java·开发语言·算法
萧瑟余晖8 小时前
Java深入解析篇九之NIO详解
java·网络·nio
The Chosen One9858 小时前
高进度算法模板速记(待完善)
java·前端·算法
极光代码工作室11 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
Leighteen11 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
名字还没想好☜12 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine