@ConditionalOnMissingBean 作用
时间: 2023-12-14 10:34:02 浏览: 79
@ConditionalOnMissingBean是一个用于修饰bean的注解,它的作用是当你的bean被注册之后,如果注册相同类型的bean,就不会成功,它会保证你的bean只有一个实例。如果你注册多个相同的bean,就会出现异常,以此来告诉人员。一般来说,对于自定义的配置类,我们应该加上@ConditionalOnMissingBean注解,以避免多个配置同时注入的风险。如果你想要注册多个相同类型的bean,可以使用@Primary来确定你要哪个实现。@Primary标识哪个是默认的bean。
举个例子,假设我们有一个AutoConfig类,其中包含了两个AMapper类型的bean:aMapper1和aMapper2。如果我们在aMapper1上面标识了@ConditionalOnMissingBean(AMapper.class),那么当我们进行aMapper2注册时,系统会出现异常,因为AMapper类型的bean只能有一个实现。如果我们想要注册多个相同类型的bean,可以使用@Primary来确定哪个是默认的bean。
```java
@Component
public class AutoConfig {
@Bean
public AConfig aConfig() {
return new AConfig("lind");
}
@Bean
@ConditionalOnMissingBean(AMapper.class)
public AMapper aMapper1(AConfig aConfig) {
return new AMapperImpl1(aConfig);
}
@Bean
@Primary
public AMapper aMapper2(AConfig aConfig) {
return new AMapperImpl2(aConfig);
}
}
```
阅读全文