作用:
- 是 Spring Boot 提供的一个条件注解,只有在 Spring 容器中不存在指定名称(name)的 Bean 时,才会加载被注解的 Bean。
- 而我们有时集成配置redis时会用到@ConditionalOnMissingBean(name = "redisTemplate") ,那么这里的意思是:只有当 Spring 容器中不存在名称为 "redisTemplate" 的 Bean 时,才会创建被注解的 Bean。当存在同名的 Bean 时,@ConditionalOnMissingBean 注解可以确保不会重复创建Bean,同时也避免了覆盖已经存在的 Bean。
注意:
- name 参数指定的是 Bean 的名称,而不是 Bean 的类型。如果你想要检查同一类型的 Bean 是否存在,可以使用 @ConditionalOnMissingBean 注解的 type 参数。
示例及用法:
@Configuration
public class MyConfig {
@Bean
@ConditionalOnMissingBean(type = "com.example.MyService")
public MyService myService() {
return new MyService();
}
}
在这个例子中,@ConditionalOnMissingBean(type = "com.example.MyService") 意思是:只有当 Spring 容器中不存在类型为 MyService 的 Bean 时,才会创建 myService Bean。