Springboot的自动配置≠自动装配,不能混淆理解;
自动装配:Springboot的自动装配是由spring容器动态的创建bean的对象实例,核心是工厂模式+反射机制;
自动配置:springboot的自动配置则是基于自己项目引入的依赖,将这些依赖的配置类放入spring容器,动态的为这些配置类创建对象实例,十分方便开发人员的使用,符合开箱即用的原则。
springboot的自动装配是springboot框架的一大核心,无需为这些配置类去new对象,直接使用@Autowired就可以直接使用相应的对象。
1.实现核心
自动配置的实现核心便是@SpringBootApplication这个注解,翻看源码
便可知其由这几个个注解组成:
@springbootconfiguration是将该类标识为一个配置类;
@ComponentScan则是spring中的扫包注解,将springboot启动类包下标有能被识别的注解的类,注入到spring容器中;
@EnableAutoConfiguration则是实现自动配置的核心;
点进该注解的源码:
可以看到由这几个注解组成 。
@EnalbeConfigrition则处理注解Import导入选择器,在类AutoConfigurationImportSelector(选择器)中加载处理自动配置类,处理流程是:
①:通过SpringFactories机制加载配置文件;
注:核心实现的文件路径是:classpath下的META-INF/spring.factories;
②:找出所有的自动配置类;
③:根据注解@Confitional过滤掉不必要的自动配置类;
注:@ConcItional 来自spring框架的注解,满足特定条件时,才会向IOC容器注册;
④:实例化这些配置类的bean对象,完成自动配置;