Spring @Conditional相关
来源:互联网 发布:查看linux防火墙状态 编辑:程序博客网 时间:2024/06/01 14:45
最本质的需求是根据条件加载Bean。 Spring4 提供了实现方案 — @Conditional ,可以通过条件判断创建 Bean 。
示例:
// java config@Configurationpublic class TestBeanConfig { // 根据条件创建, 条件写在TestConditional类里 @Bean @Conditional(TestConditional.class) public TestBean createTestBean() { return new TestBean(); }}// 配套的条件类实现public class TestConditional implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { return false; }}
只有当 TestConditional.matches() 结果为 true 时才会创建 TestBean 。
注解 @Conditional
@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE, ElementType.METHOD})public @interface Conditional { Class<? extends Condition>[] value();}
作用范围: 类,方法
包含参数: value, 接口Condition的实现类数组。数组内所有的条件都要满足哟!
参数 ConditionContext
public interface ConditionContext { // 检查Bean定义 BeanDefinitionRegistry getRegistry(); // 检查Bean是否存在,甚至探查Bean的属性 ConfigurableListableBeanFactory getBeanFactory(); // 检查环境变量是否存在以及它的值是什么 Environment getEnvironment(); // 检查加载的资源 ResourceLoader getResourceLoader(); // 加载并检查类是否存在 ClassLoader getClassLoader();}
参数 AnnotatedTypeMetadata
public interface AnnotatedTypeMetadata { boolean isAnnotated(String annotationName); Map<String, Object> getAnnotationAttributes(String annotationName); Map<String, Object> getAnnotationAttributes(String annotationName, boolean classValuesAsString); MultiValueMap<String, Object> getAllAnnotationAttributes(String annotationName); MultiValueMap<String, Object> getAllAnnotationAttributes(String annotationName, boolean classValuesAsString);}
- 借助 isAnnotated() 能够判断带有 @Bean 注解的方法是不是还有其他特定注解;
- 借助其他方法可以检查 @Bean 注解的方法上其他注解的属性;
附录
Spring Boot 在 @Conditional 基础上扩展了几个注解方便做此类判断:@ConditionalOnClass, @ConditionalOnMissingClass , @ConditionalOnBean , @ConditionalOnMissingBean ;
阅读全文
0 0
- Spring @Conditional相关
- spring @conditional
- Spring @Conditional使用指南
- Spring @Conditional注解的使用
- spring @conditional注解的使用
- Spring 条件注解(@Conditional)
- Spring 条件化Bean @Conditional
- Spring注解@Profile与@Conditional
- Spring-boot中Conditional介绍
- 第十一章 Spring条件注解@Conditional
- 借助@Conditional实现自定义初始化Spring Bean
- 浅谈spring中@Conditional(条件注解)
- Spring boot源码分析-Conditional(12)
- spring boot 条件注解的使用@Conditional;@Conditional 可以根据条件,创建不同的bean,
- springboot 1.5.3 源码分析(三):spring @Conditional注解
- SpringBoot4-spring高级话题-spring aware,多线程,计划任务,条件注解@Conditional
- spring相关
- Spring 相关
- KMP&&trie树&&AC自动机
- URL和URI的区别
- 基于tensorflow的3D CNN代码实现
- python使用tcp socket 传输文件-服务端,客户端
- 再来一次——基于人工智能的应用创新
- Spring @Conditional相关
- 最简单的数据库优化
- 国科大数据挖掘课程总结
- Java基础小知识笔记(自己努力常更新)
- 【图DFS】poj1321
- 利用Django中的url方法实现地址动态拼接自动生成超链接地址
- BZOJ2938[Poi2000]病毒 AC自动机
- Spring 侵入式和非侵入式
- MIT6.00.1x学习笔记2