每天叫醒你的不是闹钟,而是梦想
01
前言
上一篇推文我们讲了几道SpringBoot面试题,今天我们来继续深入研究SpringBoot自动配置原理
从SpringBoot的启动类入手
@SpringBootApplication:
昨天已经提过,该注解是SpringBoot的核心注解,其源码由
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
三个注解组成,而我们今天要说的就是@EnableAutoConfiguration注解
该注解的作用就是自动配置注解
进入该注解源码
从AutoConfigurationImportSelector.class这个类入手,进入源码,上篇推文提过,SpringBoot的自动配置原理就是由@Import注解注入了ImportSelectors接口的实现类AutoConfigurationImportSelector,进入ImportSelectors源码中查看
02
ImportSelector解释
对注释翻译(小编英语水平较低,勿喷):
ImportSelector接口可以实现以下几个接口:
EnvironmentAware
BeanFactoryAware
BeanClassLoaderAware
ResourceLoaderAware
且上述接口的方法会在ImportSelectors接口的方法调用之前调用
ImportSerlectors接口方法selectImports注释翻译:
选择与返回….
算了还是看有道翻译吧
猜想 : 该方法可以返回导入类的名称,也就是自动导入类的名称?
OK。继续…….
03
验证猜想
我们现在返回AutoConfigurationImportSelector类中,顺便在返回值的代码打个断点,验证我们刚刚所分析的,启动
通过debug我们可以看到AutoConfigurationImportSelector一共自动配置了40个Bean。
而@Import的作用就是为我们自动将Bean对象注入到IOC容器中
也就是在SpringBoot启动类启动的时候为什么注入了40个Bean对象。
根据上面的讲解,接下来我们通过自己手写一个SpringBoot自动配置类来对Bean对象实现自动注入到IOC容器。
04
实践
步骤:
1. 需要注入到IOC容器的Bean对象
2. 需要一个启动类来启动SpringApplication
3. 启动类需要使用@Import注解来自动注入Bean对象到IOC容器。
1. Bean对象
2. 启动类与@Import注解
3.Console(已经创建了对象,并将Bean对象注入到IOC容器中)
看完懂了?会了?评论给个666吧,哈哈哈!!!
谢谢阅读