Spring Boot的条件注解位于org.springframework.boot.autoconfigure.condition包下,其对应的处理类在它上面的Conditional注解里声明。
注解 | 处理类 | 说明 |
---|---|---|
ConditionalOnBean | OnBeanCondition | 指定的bean都在Spring容器中时才匹配。 |
ConditionalOnClass | OnClassCondition | 指定的类都在classpath上时才匹配。 |
ConditionalOnCloudPlatform | OnCloudPlatformCondition | 指定的云平台处于活动状态时才匹配。 |
ConditionalOnExpression | OnExpressionCondition | 指定SpEL表达式成立时才匹配。 |
ConditionalOnJava | OnJavaCondition | 指定Java版本符合要求时才匹配。 |
ConditionalOnJndi | OnJndiCondition | JNDI可用和可以查找指定位置时才匹配。 |
ConditionalOnMissingBean | OnBeanCondition | Spring容器中缺少对应的bean时才匹配。 |
ConditionalOnMissingClass | OnClassCondition | classpath中缺少指定的类时才匹配。 |
ConditionalOnNotWebApplication | OnWebApplicationCondition | 应用程序为非Web程序时才匹配。 |
ConditionalOnProperty | OnPropertyCondition | 应用环境中指定的属性存在时才匹配。 |
ConditionalOnResource | OnResourceCondition | 指定的资源文件存在时才匹配。 |
ConditionalOnSingleCandidate | OnBeanCondition | Spring容器中存在且只存在一个对应的实例时才匹配。 |
ConditionalOnWebApplication | OnWebApplicationCondition | 应用程序为Web程序时才匹配。 |
下面再补充一下几个功能接口
接口名称 | 主要方法及功能 | |
---|---|---|
ApplicationContextAware | void setApplicationContext(ApplicationContext applicationContext) throws BeansException:实现了该接口的bean,可以从此方法获取它所在的容器上下文环境。 | |
InitializingBean | void afterPropertiesSet() throws Exception:实现了该接口的bean,在初始化的时候会执行此方法。 | |
BeanPostProcessor | default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException:执行实例化之前的一些逻辑。 default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException:实执行实例化之后的一些逻辑。 |