@ConditionalOnBean java实例
时间: 2024-03-05 17:19:35 浏览: 32
@ConditionalOnBean 注解表示当容器中存在指定的 Bean 时才会加载当前的配置类或者 Bean。具体来说,它会根据指定的 Bean 名称或类型来判断容器中是否存在相应的 Bean,如果存在,则加载当前的配置类或者 Bean,否则忽略。这个注解通常用于处理 Bean 间的依赖关系,确保当前的 Bean 在依赖的 Bean 已经被加载之后再进行加载。
相关问题
@ConditionalOnProperty @ConditionalOnBean java实例
下面是使用@ConditionalOnProperty和@ConditionalOnBean条件注解的Java示例:
```java
@Configuration
public class MyConfig {
@Bean
@ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")
public MyBean myBean() {
return new MyBean();
}
@Bean
@ConditionalOnBean(MyBean.class)
public MyService myService(MyBean myBean) {
return new MyService(myBean);
}
}
```
这个配置类中定义了两个bean:MyBean和MyService。使用@ConditionalOnProperty注解标注的myBean方法只有在配置文件中设置了my.feature.enabled=true时才会注册到Spring容器中。使用@ConditionalOnBean注解标注的myService方法只有在容器中存在MyBean bean时才会注册到Spring容器中。
注意:在使用@ConditionalOnBean注解时,方法的参数列表中可以传入其他已经注册到容器中的bean,这样可以更加灵活的判定该bean是否需要注册。
2>:@ConditionalOnBean与@ConditionalOnMissingBean
@ConditionalOnBean 和 @ConditionalOnMissingBean 是 Spring Framework 中的注解,用于控制 Bean 的创建条件。
@ConditionalOnBean 注解用于指定在存在指定的 Bean 时才创建当前的 Bean。它接受一个或多个 Class 类型的参数,表示需要存在的 Bean 的类型。当所有指定的 Bean 都存在时,才会创建被注解的 Bean。
@ConditionalOnMissingBean 注解与 @ConditionalOnBean 相反,用于指定在不存在指定的 Bean 时才创建当前的 Bean。同样,它也接受一个或多个 Class 类型的参数,表示需要不存在的 Bean 的类型。当所有指定的 Bean 都不存在时,才会创建被注解的 Bean。
这两个注解通常与 @Configuration 和 @Bean 注解一起使用,用于控制条件化的 Bean 创建。可以根据应用需求,按照不同的条件来创建不同的 Bean 实例,并且避免冲突或重复创建相同类型的 Bean。