SpringBoot
1. Spring Boot 自动配置原理是什么?条件注解如何工作?
核心原理:
- Spring Boot 通过
@EnableAutoConfiguration触发自动配置。 - 它会扫描
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(Spring Boot 2.7+)或旧版的spring.factories文件,加载所有AutoConfiguration类。 - 每个
AutoConfiguration类都使用 条件注解(Conditional Annotations) 控制是否生效。

条件注解工作机制:
- 如
@ConditionalOnClass:检查 classpath 是否存在某类; @ConditionalOnMissingBean:只有当容器中没有该 Bean 时才创建;@ConditionalOnProperty:根据配置属性决定是否加载;- 底层通过
ConditionEvaluator在 BeanDefinition 注册阶段判断条件是否满足。
✅ 关键点:自动配置是“约定优于配置”的体现,但可通过
exclude或自定义@Conditional覆盖。
mermaid
sequenceDiagram
participant User
participant OrderService
participant MessageTable
participant MQ
participant StockService
User->>OrderService: 下单请求
OrderService->>MessageTable: 开启事务<br/>1. 插入订单<br/>2. 插入消息表(status=PENDING)
MessageTable-->>OrderService: 提交事务
OrderService->>MQ: 发送消息(异步 or 同步)
MQ->>StockService: 消费消息 → 扣库存
StockService-->>MQ: 成功 → 返回 ACK
MQ->>OrderService: (可选)回调更新消息状态
alt 失败重试
loop 定时任务扫描
OrderService->>MessageTable: 扫描 status=PENDING 的消息
OrderService->>MQ: 重新投递
end
end