@ConditionalOnClass注解作用: 某个class位于类路径上,才会实例化一个Bean。即判断当前classpath下是否存在指定类,若是则将当前的配置装载入spring容器
@ConditionalOnProperty:控制@Configuration是否生效
Spring提供的Condition
除了自己自定义Condition之外,Spring还提供了很多Condition给我们用
- @ConditionalOnBean 仅仅在当前上下文中存在某个对象时,才会实例化一个Bean
- @ConditionalOnClass 某个class位于类路径上,才会实例化一个Bea
- @ConditionalOnExpression 当表达式为true的时候,才会实例化一个Bean。
比如:
@ConditionalOnExpression("true")
@ConditionalOnExpression("${my.controller.enabled:false}")
4. @ConditionalOnMissingBean 仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean
5. @ConditionalOnMissingClass 某个class类路径上不存在的时候,才会实例化一个Bean
6. @ConditionalOnNotWebApplication 不是web应用
(8)题外话:怎么在Condition中获取application.properties的配置项
在实际开发中,我们的条件可能保存在application.properties中,那么怎么在Condition中获取呢,这个很简单,主要通过ConditionContext进行获取,具体代码如下:
Java代码
String port = context.getEnvironment().getProperty("server.port");
System.out.println(port);