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


相关推荐
nanxun8861 天前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103511 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师1 天前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师1 天前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_01 天前
mac(m5)平台编译openjdk
java
唐青枫2 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马2 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261352 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261352 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454753 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程