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


相关推荐
daidaidaiyu31 分钟前
一文学习 工作流开发 BPMN、 Flowable
java
SuniaWang2 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
sheji34162 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
m0_726965982 小时前
面面面,面面(1)
java·开发语言
xuhaoyu_cpp_java3 小时前
过滤器与监听器学习
java·经验分享·笔记·学习
程序员小假3 小时前
我们来说一下 b+ 树与 b 树的区别
java·后端
Meepo_haha4 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
sheji34164 小时前
【开题答辩全过程】以 基于springboot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
木井巳4 小时前
【递归算法】子集
java·算法·leetcode·决策树·深度优先