@ConditionalOnMissingBean 作用在类上
时间: 2023-10-17 11:59:47 浏览: 78
`@ConditionalOnMissingBean` 是 Spring 框架中的一个注解,它可以用于类级别上,用于根据是否存在指定类型的 Bean 来决定是否创建当前类的实例。
当我们在一个类上添加了 `@ConditionalOnMissingBean` 注解时,Spring IoC 容器会根据当前上下文中是否已经存在指定类型的 Bean 来判断是否创建该类的实例。如果不存在该类型的 Bean,则会创建当前类的实例并加入容器中;如果已经存在该类型的 Bean,则不会创建当前类的实例。
这个注解通常用于条件化地创建一些默认的 Bean,当用户未显式配置相关的 Bean 时,才会被创建。它可以帮助我们在不同场景下有选择地创建 Bean,以满足特定需求。
以下是一个示例:
```java
@Configuration
public class MyConfiguration {
@Bean
@ConditionalOnMissingBean
public MyService myService() {
return new MyServiceImpl();
}
}
```
在上面的示例中,`@ConditionalOnMissingBean` 注解应用于 `myService()` 方法上。它表示只有当容器中不存在 `MyService` 类型的 Bean 时,才会创建并注册 `myService()` 方法所返回的 `MyServiceImpl` 实例。
这样,当用户没有显式定义 `MyService` 的 Bean 时,Spring IoC 容器会自动创建一个默认的 `MyServiceImpl` 实例。而如果用户已经定义了 `MyService` 的 Bean,则默认的实例不会被创建。
阅读全文