回答
Spring 支持根据特定条件来动态地创建 Bean,主要有三种方式:
- 使用
@Conditional
注解:通过条件化的方式在特定条件下创建 Bean。 - 使用
@Profile
注解:根据不同的环境条件来选择性地创建 Bean。 - 基于配置文件的条件:根据外部配置文件中的属性值来控制 Bean 的创建。
这里第一种方案是最常见和优雅的方式。
详解
使用 @Conditional 注解
@Conditional
支持条件式创建 Bean,它可以根据复杂条件来决定是否创建一个 Bean。比如:
@Configuration
@ConditionalOnProperty(prefix = "distributed.lock",value = "redis",havingValue = "1")
public class RedisDistributedLock {
}
如果配置文件中 distributed.lock.redis = 1
,则加载该 Bean。