Spring
提供了多种实现化条件化配置的选择,最基本的就是@Conditional,在@Conditional基础上又衍生出来很多,如ConditionalOnProperty
和ConditionalOnClass
等。
@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
@ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean)
@ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean)
@ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)
@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)
@ConditionalOnNotWebApplication(不是web应用
虽然spring提供了很多,但是实际需求下,有很多场景是不满足的,需要自定义条件配置。
步骤如下:
1、自定义一个类继承SpringBootConditional
例如:class TestCondition extends SpringBootConditional
2、在配置类上添加:
@Conditional(TestCondition.class);