java
标准化、规范化
java代码风格
【目录】java
编程-java8
编程-java9
编程-java-见过的异常
gradle
编程-java21
编程-java23
编程-java17
编程-java11
【目录】java-web-其它框架
java-vertx
quarkus
javalin
solon
Helidon
【目录】spring家族
spring
springcloud + nacos
consul
springboot启动流程
springboot使用及原理
springcloud
优化springboot
【java高级】
java-多线程-问题记录
java高级-ArrayList
java高级-HashMap
jdk源码解析-TreeMap红黑树
java对象占用多少字节
juc(并发)
ThreadPoolExecutor中ctl变量的理解
ThreadPoolExecutor分析
JVM(java虚拟机)
jvm学习路线
jvm
Java启动参数
debug
java-debug-arthas
java-debug-jdb
高并发/高性能/高可用
设计代码或编写代码时应该考虑的
如何发现系统中的瓶颈?
场景分析
mysql
mysql explain
mysql主从
mysql常见异常
方法论
工作中遇到的问题记录
代码优化
学习的思路
产品
本文档使用 MrDoc 发布
-
+
首页
springboot启动流程
# springboot启动流程 https://blog.csdn.net/woshilijiuyi/article/details/82219585 ## 工程请参考 springboot-simple.zip ## entry Application entry is `SpringApplication.run(App.class, args);`. - return new SpringApplication(new Class[] {App.class}).run(args); * new SpringApplication(new Class[] {App.class}) ```text this.resourceLoader = resourceLoader; Assert.notNull(primarySources, "PrimarySources must not be null"); this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources)); this.webApplicationType = WebApplicationType.deduceFromClasspath(); setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class)); setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class)); this.mainApplicationClass = deduceMainApplicationClass(); ``` spring.factories: - in spring-boot-2.1.6.RELEASE.jar!\META-INF\spring.factories - in spring-boot-autoconfigure-2.1.6.RELEASE.jar!/META-INF/spring.factories ```text SpringFactoriesLoader.loadFactoryNames(ApplicationContextInitializer.class, classLoader): names = {LinkedHashSet@1002} size = 6 0 = "org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer" 1 = "org.springframework.boot.context.ContextIdApplicationContextInitializer" 2 = "org.springframework.boot.context.config.DelegatingApplicationContextInitializer" 3 = "org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer" 4 = "org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer" 5 = "org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener" SpringFactoriesLoader.loadFactoryNames(ApplicationListener.class, classLoader): names = {LinkedHashSet@1118} size = 10 0 = "org.springframework.boot.ClearCachesApplicationListener" 1 = "org.springframework.boot.builder.ParentContextCloserApplicationListener" 2 = "org.springframework.boot.context.FileEncodingApplicationListener" 3 = "org.springframework.boot.context.config.AnsiOutputApplicationListener" 4 = "org.springframework.boot.context.config.ConfigFileApplicationListener" 5 = "org.springframework.boot.context.config.DelegatingApplicationListener" 6 = "org.springframework.boot.context.logging.ClasspathLoggingApplicationListener" 7 = "org.springframework.boot.context.logging.LoggingApplicationListener" 8 = "org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener" 9 = "org.springframework.boot.autoconfigure.BackgroundPreinitializer" ``` 基于如上,可自行创建META-INF\spring.factories文件,并配置自己的ApplicationContextInitializer和ApplicationListener。 ```text org.springframework.context.ApplicationContextInitializer=\ com.example.SimpleApplicationContextInitializer org.springframework.context.ApplicationListener=\ com.example.SimpleApplicationListener ``` * ConfigurableApplicationContext run(String... args) - `SpringApplicationRunListeners listeners = getRunListeners(args);` ```text names = {LinkedHashSet@1299} size = 1 0 = "org.springframework.boot.context.event.EventPublishingRunListener" ``` - `listeners.starting();` --> ApplicationStartingEvent - `listeners.environmentPrepared(environment);` --> ApplicationEnvironmentPreparedEvent - --> ApplicationStartedEvent
我是张三
2024年12月26日 19:45
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
eblog
Markdown文件
分享
链接
类型
密码
更新密码