1.为什么使用springboot
springboot容易上手,做了jar包的版本控制,不用考虑maven依赖,方便敏捷开发,内置tomcat减少开发配置,由于SPI提供对外的starter扩展。
2.springboot的自动装备原理:
@SpringBootApplication @EnableAutoConfiguration @Import(EnableAutoConfigurationImportSelector.class) EnableAutoConfigurationImportSelector 类 selectImports 方法 读取 META-INF/spring.factories 下的配置 key-value 形式的配置,交给ioc管理 @ComponentScan @SpringBootConfiguration
3.springboot自动装配jar包扩展
1:写一个自动装配的jar包,用来写自己启动器的核心逻辑. 2:在自动装配工程中导入redis原生的jar包(不要导入启动器的包) 3:在自动装配工程中创建一个meta-inf/spring.facotries文件 文件内容是 org.springframework.boot.autoconfigure.EnableAutoConfiguration=/com.tuling.autoconfig.TulingRedisAutoConfiguration 4:把你的自动装配类 安装到自己本地maven仓库中 5:创建一个启动器工程 什么都不做,只做一个自动装配工程的依赖就可以了 6:把启动器工程同样安装到本地maven仓库中. 7:写一个测试工程来使用你自己的启动器好不好用. 7.1)导入你自己的启动器工程(不是自动装配工程) 7.2)在application.yml中配置属性.
4.springboot启动jar包
(1)Spring Boot应用打包之后,生成一个Fat.jar,包含了应用依赖的jar包和Spring Boot loader相关的类。 (2)Fat jar的启动Main函数是JarLauncher,它负责创建一个LaunchedURLClassLoader来加载/lib下面的jar,并以一个新线程启动应用的Main函数。
1.通过插件spring-boot-plugin 生成对应的 MANIFEST.MF文件,其中包含 main-class 指定运行 java -jar 的主程序, 并且把依赖的jar文件打包成fat.jar 2.运行java -jar jarLauncher通过加载BOOT-INFO/class目录,以及BOOT-INFO/lib目录的文件,实现fat.jar的启动。 3.State-Class 加载应用程序的main方法。
5.springBoot 启动war包
tomcat---> web.xml--filter servlet listener 3.0+ tomcat启动的时候肯定调用了 SpringBootServletInitializer 的 SpringApplicationBuilder , 就会启动springboot
6.springboot的启动spring容器过程
1.获取启动类。:需要根据启动类加载ioc容器 -- 并且.存储配置类 3.推算web环境 是servlet 还是webFlux 4.读取spring.factories ,读取对外扩展的,对内解耦 ApplicationContextInitializer,ApplicationListener 对外扩展 5.根据main推算所在的类。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/281439.html