目录
@Conditional
@ConditionalOnBean
@ConditionalOnMissingBean
@ConditionalOnClass
@ConditionalOnMissingClass
@ConditionalOnWebApplication
@ConditionalOnNotWebApplication
@ConditionalOnProperty
@ConditionalOnExpression
@ConditionalOnJava
@ConditionalOnResource
@ConditionalOnJndi
@ConditionalOnCloudPlatform
@ConditionalOnSingleCandidate
这是 Spring 4.0 添加的新注解,用来标识一个Spring Bean 或者 Configuration 配置文件,当满足指定的条件才开启配置。
组合@conditiona1 注解,当容器中有指定的Bean 才开启配置
组合@Conditional 注解,和 @ConditionalonBean注解相反,当容器中没有指定的 Bean 才开启配置。
组合@conditional 注解,当容器中有指定的Class 才开启配置。
组合@Conditional 注解,和注解相反,当容器中没有指@ConditionalOnClass定的 Class 才开启配置
组合@conditional 注解,当前项目类型是 WEB组合项目才开启配置。
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional({OnWebApplicationCondition.class})
public @interface ConditionalOnWebApplication {
ConditionalOnWebApplication.Type type() default ConditionalOnWebApplication.Type.ANY;
public static enum Type {
ANY,
SERVLET,
REACTIVE;
private Type() {
}
}
}
组合@Conditional 注解,和@ConditionalOnWebApplication注解相反,当前项目类型不是 WEB 项目才开启配置
组合@conditional注解,当指定的属性有指定的值时才开启配置。
组合@conditional 注解,当 SpEL 表达式为 true时才开启配置。
SpEL支持的字面量包括:字符串、数字类型(int、long、float、double)、布尔类型、null类型。 支持 Java 标准操作符:等于、不等于、小于、小等于、大于、大等于、正则表达式和 instanceof 操作符。
//解析器 ExpressionParser parser = new SpelExpressionParser(); //数值比较 boolean result=parser.parseExpression("2>1").getValue(Boolean.class); System.out.println("2>1:"+result); //字符串比较 result=parser.parseExpression("'z'>'a'").getValue(Boolean.class); System.out.println("'z'>'a':"+result); //instanceof 运算符 result=parser.parseExpression("'str' instanceof T(String)").getValue(Boolean.class); System.out.println("'str' 是否为字符串 :"+result); result=parser.parseExpression("1 instanceof T(Integer)").getValue(Boolean.class); System.out.println("1 是否为整型 :"+result); //正则表达式 result=parser.parseExpression("22 matches '\\d{2}'").getValue(Boolean.class); System.out.println("22 是否为两位数字 :"+result);
组合 @conditional 注解,当运行的 Java JVM 在指定的版本范围时才开启配置。
组合 @conditional 注解,当类路径下有指定的资源才开启配置。
组合 @conditional 注解,当指定的JNDI 存在时才开启配置。
组合 @conditional 注解,当指定的云平台激活时才开启配置。
组合@Conditional注解,当指定的 class 在容器中只有一个 Bean,或者同时有多个但为首选时才
开启配置。