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


相关推荐
SimonKing1 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean1 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven972 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55111 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河12 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程15 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅16 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者17 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺17 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端