应用关注的三大核心:场景、配置、组件
自动配置流程

- 导入starter
- 依赖导入autoconfigure
- 寻找类路径下 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件
- 启动,加载所有 自动配置类 xxxAutoConfiguration
a 给容器中配置功能组件
b 组件参数绑定到 属性类中。xxxProperties
c 属性类和配置文件前缀项绑定
d @Contional派生的条件注解进行判断是否组件生效 - 效果:
a 修改配置文件,修改底层参数
b 所有场景自动配置好直接使用
c 可以注入SpringBoot配置好的组件随时使用
进阶理解
@SpringBootApplication
@SpringBootConfiguration
就是: @Configuration ,容器中的组件,配置类。spring ioc启动就会加载创建这个类对象
@EnableAutoConfiguration:开启自动配置
开启自动配置
@AutoConfigurationPackage:扫描主程序包:加载自己的组件
●利用 @Import(AutoConfigurationPackages.Registrar.class) 想要给容器中导入组件。
●把主程序所在的包的所有组件导入进来。
●为什么SpringBoot默认只扫描主程序所在的包及其子包
@Import(AutoConfigurationImportSelector.class):加载所有自动配置类:加载starter导入的组件
List<String> configurations = ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader())
.getCandidates();
扫描SPI文件:META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@ComponentScan
组件扫描:排除一些组件(哪些不要)
排除前面已经扫描进来的配置类、和自动配置类。
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

Comments | NOTHING