优化@Conditional

master
xuchengsheng 2023-10-12 22:44:06 +08:00
parent 9dd99636b9
commit 715029c3ba
1 changed files with 12 additions and 12 deletions

View File

@ -545,30 +545,30 @@ private Condition getCondition(String conditionClassName, @Nullable ClassLoader
1. **基于`@Bean`的条件配置** 1. **基于`@Bean`的条件配置**
- **场景描述**在单个bean的创建上应用条件。 - **场景描述**
- 在单个bean的创建上应用条件。
- **实现方法**:通过在`@Bean`注解方法上直接使用`@Conditional`。 - **实现方法**
- 通过在`@Bean`注解方法上直接使用`@Conditional`。
- **结果** - **结果**
- 当条件满足(如`enable.bean`为`true`特定的bean如`user1`)会被注册。 - 当条件满足(如`enable.bean`为`true`特定的bean如`user1`)会被注册。
- 当条件不满足该bean不会被注册。 - 当条件不满足该bean不会被注册。
2. **基于`@Configuration`的条件配置** 2. **基于`@Configuration`的条件配置**
- **场景描述**控制整个配置类的激活状态从而影响该配置中定义的所有beans。 - **场景描述**
- 控制整个配置类的激活状态从而影响该配置中定义的所有beans。
- **实现方法**:在`@Configuration`注解的类上直接使用`@Conditional`。 - **实现方法**
- 在`@Configuration`注解的类上直接使用`@Conditional`。
- **结果** - **结果**
- 当条件满足(如`enable.config`为`true`配置类被激活其内部的所有beans如`user3`和`user4`)都会被注册。 - 当条件满足(如`enable.config`为`true`配置类被激活其内部的所有beans如`user3`和`user4`)都会被注册。
- 当条件不满足配置类及其内部定义的所有beans都不会被注册。 - 当条件不满足配置类及其内部定义的所有beans都不会被注册。
3. **使用自定义组合注解** 3. **使用自定义组合注解**
- **场景描述**:创建自己的条件注解,以提供更清晰、更简洁的语法,或为特定的业务逻辑封装条件逻辑。 - **场景描述**
- 创建自己的条件注解,以提供更清晰、更简洁的语法,或为特定的业务逻辑封装条件逻辑。
- **实现方法**:定义一个新的注解(如`@ConditionalOnCustomActive`),并使用`@Conditional`元注解将其关联到特定的条件类。 - **实现方法**
- 定义一个新的注解(如`@ConditionalOnCustomActive`),并使用`@Conditional`元注解将其关联到特定的条件类。
- **结果** - **结果**
- 当条件满足(如`enable.custom`为`true`),带有`@ConditionalOnCustomActive`注解的配置类或bean会被注册。 - 当条件满足(如`enable.custom`为`true`),带有`@ConditionalOnCustomActive`注解的配置类或bean会被注册。
- 当条件不满足,它们不会被注册。 - 当条件不满足,它们不会被注册。