1.SpringBoot 原理分析
1.1 SpringBoot自动装配
1.1.1 Condition
public class ClassCondition implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
Map<String, Object> map = annotatedTypeMetadata.getAnnotationAttributes (ConditionOnClass.class.getName ());
String[] value =(String[]) map.get ("value");
boolean flag=true;
try {
for (String className : value) {
Class<?> cls = Class.forName (className);
}
} catch (ClassNotFoundException e) {
flag=false;
}
return flag;
}
}
@Target({
ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional (ClassCondition.class)
public @interface ConditionOnClass {
String[]value();
}
@Configuration
public class UserConfig {
@Bean
public User user() {
return new User ();
}
@Bean
@ConditionalOnProperty(name = "itcast" ,havingValue