Bootstrap

springboot自动配置

springboot:
一.切换条件Condition
1.配置类加@Configuration,返回值为所需实体类的方法加*@Bean*
2.实体类方法加*@Conditional ( XXXX.class )*
3.XXX类实现Condition类重写它的public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata)
方法,该方法的返回值是一个boolean类型,用来控制是否创建实体类(即按条件加载).
二.切换内置服务器
springboot-autoconfigure 下面排除tomcat,用jetty作为web服务器启动,也是用的一的原理.
三.Eeable注解底层用的就是Import注解导入所需要的类在一个Enable 注解类上配置Import(里面写配置类.class)注解和它的元注解,这个Enable 注解类就可以用来注入了.
四.Import注解的四种用法:
1.导入bean
2.导入配置类
3. 导入ImportSelector的实现类,重写它的selectImports方法(返回值参数为类的全限定名数组)
4.导入ImportBeanDefinitionRegistrar的实现类,重写它的
registerBeanDefinitions(AnnotationMetadata var1, BeanDefinitionRegistry var2)
方法,可以指定实体类的名称.

@EableAutoConfiguration注解内部使用@Import(AutoConfigutationImportSelector.class)来加载配置类:springboot使用的是Import的第三种方式:导入ImportSelector的实现类,重写它的selectImports方法(返回值参数为类的全限定名数组) ,来实现的.参数是从spring-boot-autoconfigure下的META-INF里的spring.factories文件里面读取到的以键值对的形式存放的所需要的注入的类的全限定名.

;