@SpingbootApplication注解解析
@SpingbootApplication是在启动类上的,在启动类中的main函数中有一个springApplication.run(启动类.class,args);,然后进行然后在run方法中会new 一个SpringApplication 的对象,在对应的SpringApplication的构造函数中有两个方法setInitializers 和 setListeners,setInitializers 这个方法主要是为了获得applicationcontext的对应的类的名字,然后进行实例化, setListeners这个方法主要是为了获得ApplicationListener对应的类的名字然后进行实例化,然后通过deduceMainApplicationClass这个函数找到对应的main函数,在其中找到对应的启动类复制给Springapplication 的mainApplicationClass然后并调用对应的刚才新建的SpringApplication对象的run方法开始执行。
@AutoConfiguration
接上run方法开始运行,进行配置的相关装载,比如创建应用上下文,以及异常报告器的获取等一些准备工作,然后调用prepareContext函数准备上下文,在prepareContext中识别到启动类方便对启动类进行解析。之后进行refresh()。
总结:自动装配的实现就是为了从spring.factories文件中获取对应的bean对象,并且由spring容器来帮我们进行管理,会把获取的bean对象放到BeanFactory工厂中。
所有的 Bean对象创建的时候需要以下过程:
