2016 - 2024

感恩一路有你

springboot启动后自动执行方法 面试题-SpringBoot如何实现的自动配置?

浏览量:1309 时间:2023-08-06 16:44:13 作者:采采

面试题-SpringBoot如何实现的自动配置?

在config里面配置auto-scann就行了,自动启动系统扫描指定的包和类

SpringBoot究竟是如何跑起来的?

如果不是我们建议使用的是SpringApplication的静态方法,这样,这个方法里面简单要创建家族一个SpringApplication对象实例,接着动态链接库这个创建好的SpringApplication的实例方法。在SpringApplication实例初始化设置的时候,它会晚几天做几件事情:

依据什么classpath里面有无必然某个特征类()来决定是否需要应该是创建战队一个为Web应用在用的ApplicationContext类型。

不使用SpringFactoriesLoader在运用的classpath中中搜索并程序加载所有用些的ApplicationContextInitializer。

建议使用SpringFactoriesLoader在运用的classpath中里查并打开程序所有用下的ApplicationListener。

断定并设置main方法的定义类。

2)SpringApplication实例初始化能够完成但是完成系统设置后,就开始想执行move方法的逻辑了,方法执行2020年伊始,首先遍历执行所有是从SpringFactoriesLoader可以不直接输入到并程序加载的SpringApplicationRunListener。内部函数它们的started()方法,告知这些SpringApplicationRunListener,“嘿,SpringBoot应用要开始负责执行咯!”。

3)创建并配置当前Spring Boot应用即将可以使用的Environment(除开配置要使用的PropertySource包括Profile)。

4)遍历数组全局函数所有SpringApplicationRunListener的environmentPrepared()的方法,帮帮他们:“当前SpringBoot应用到建议使用的Environment早已准备好咯!”。

5)要是SpringApplication的showBanner属性被设置为true,则再打印banner。

6)参照用户是否是比较明确系统设置了applicationContextClass类型和系统初始化阶段的断定结果,做出决定该为当前SpringBoot应用创建家族什么类型的ApplicationContext并修改完成,后再根据条件判断是否是去添加ShutdownHook,做出决定是否是建议使用可以自定义的BeanNameGenerator,确定是否使用自定义的ResourceLoader,肯定,最重要的是的,将之后打算好的Environment设置给创建家族好的ApplicationContext可以使用。

7)ApplicationContext创建家族好之后,SpringApplication会再度动用Spring-FactoriesLoader,里查并运行程序classpath中所有用些的ApplicationContext-Initializer,然后再遍历过程调用这些ApplicationContextInitializer的initialize(applicationContext)方法来对早创建角色好的ApplicationContext参与进一步的处理。

8)遍历调用所有SpringApplicationRunListener的contextPrepared()方法。

9)最核心的三步,将前的是从@EnableAutoConfiguration资源的所有配置这些其他形式的IoC容器配置打开程序到也准备好一切就绪的ApplicationContext。

10)遍历动态链接库所有SpringApplicationRunListener的contextLoaded()方法。

11)调用ApplicationContext的refresh()方法,能够完成IoC容器和用的到最后两道工序。

12)直接输入当前ApplicationContext中是否是可以注册有CommandLineRunner,如果不是有,则遍历数组负责执行它们。

13)正常情况下,遍历树不能执行SpringApplicationRunListener的finished()方法、(假如不过几秒钟出现异常,则仍然动态创建所有SpringApplicationRunListener的finished()方法,只不过这种下会将极其信息也被传遍去处理)

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。