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


相关推荐
Gu_yyqx2 分钟前
IDEA中debug的使用
java·ide·intellij-idea
老华带你飞5 分钟前
个人网盘管理|基于springboot + vue个人网盘管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
宸津-代码粉碎机6 分钟前
告别繁琐SQL!MyBatis - Flex让数据库操作“飞”起来
java·服务器·tomcat
艾莉丝努力练剑13 分钟前
【Linux进程(四)】深入理解 Linux O(1) 调度器:双队列轮转与进程优先级机制——如何避免进程饥饿,实现公平且高效的进程调度
java·大数据·linux·运维·服务器·人工智能·安全
郑州光合科技余经理1 小时前
PHP构建:支撑欧美澳市场的同城生活服务平台开发
java·开发语言·数据库·uni-app·php·排序算法·生活
超级大只老咪8 小时前
数组相邻元素比较的循环条件(Java竞赛考点)
java
小浣熊熊熊熊熊熊熊丶8 小时前
《Effective Java》第25条:限制源文件为单个顶级类
java·开发语言·effective java
毕设源码-钟学长9 小时前
【开题答辩全过程】以 公交管理系统为例,包含答辩的问题和答案
java·eclipse
啃火龙果的兔子9 小时前
JDK 安装配置
java·开发语言
星哥说事9 小时前
应用程序监控:Java 与 Web 应用的实践
java·开发语言