Condition自动配置
@Conditional配合condition接口使用,只有借口的实现类返回true,才会装配
使用在方法上只对方法有效,使用在类上,对类所有方法有效
也可以传多个参数,表示这些参数都返回true才会装配
@SpringBootConfiguration
public class EncodingConvertConfiguration {
@Bean
@Conditional(UTF8Condition.class)
public EncodingConvert createUTF8EncodingConvert() {
return new UTF8EncodingConvert();
}
@Bean
@Conditional(GBKCondition.class)
public EncodingConvert createGBKEncodingConvert() {
return new GBKEncodingConvert();
}
}
public class UTF8Condition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
String encoding=System.getProperty("file.encoding");
if(encoding!=null) {
return "utf-8".equals(encoding.toLowerCase());
}
return false;
}
}
maven springboot jar包下 condition 的子类
@conditiononclass 这个类存在的情况下才装配
@conditiononproperties 这个属性跟值匹配的情况下才装配。 matchIfMissing=true 找不到也返回true
@conditiononbean 根据容器中是否存在某个bean来装配
@conditiononmissingbean 根据容器中不在某个bean来装配
修改系统默认编码 启动项 -Dfile.encoding=GBK