springboot

什么是配置类

@configuration被这个注解所修饰的类,就是配置类

spi的扩展机制

什么是SPI
	spi的全称是Service Provider Interfacce,是一种服务发现机制,通过meta-inf/service下的文件中的类路径来加载类。这一机制使得很多框架都可以基于spi进行扩展,比如dubbo、jdbc都使用到了spi机制
	
mata-inf/spring.factory

springboot启动类的注解

SpringBootApplication
    ComponentScan
	SpringbootAutoConfiguration
	EnableAutoConfiguration

对springboot的理解、springboot的特性

springboot是应用框架 脚手架
springboot是用于快速开发spring应用的脚手架,设计的目的是为了简化我们搭建、开发Spring项目的过程
springboot提供了很多内置的start,无需配置,开箱即用
springboot内置了web容器,无需依赖外部web容器,直接启动jar就可以启动web容器
springboot自带了监控功能,可以监控程序的运行状况
springboot帮我们管理了第三方依赖的版本,避免冲突
springboot简化了各个组件的整合,引入start即可

自动配置类也是在spring的ioc加载过程中去解析的,并不是单独去解析的

springboot装配原理

通过注解,加载所有的web-inf/spring.factory文件	这是springboot留给第三方扩展的扩展点
去重  去掉不应加载的(读取web-inf/spring-autoconfigure-metadata.properties)根据配置过滤

x、启动类上添加注解@springBootApplication
x、内部包含另一个注解@EnableAutoConfiguration
x、内部包含注解@import(引入了)
x、spring容器启动时,加载ioc容器时会解析import注解
x、import注解导入selector
x、加载所有web-inf/spring.factory文件,文件中都是key-val的键值对,通过键找到所有值然后加载,键为autoConfigureClass
x、去重
x、去掉exlude需要排除的
x、根据autoconfigure中的加载条件OnClass或者OnBean选择是否加载(也可以在类中添加ONClass注解或者 OnBean注解)
	根据条件注解排除

springboot启动过程有哪些步骤

x、加载启动类
x、启动类中的main方法会使用springApplication.run();构建应用程序上下文 
x、自动配置:在构建应用程序上下文的过程中,springboot会扫描类路径上的各种组件、配置文件和类,根据条件进行配置
x、加载外部属性:springboot会加载各种外部属性,application.yml
x、创建bean:创建IOC容器,使用IOC容器来管理应用程序中的各种bean的实例,会创建和管理这些bean,以供后续的组件使用
x、启动内嵌服务器  (默认tomcat,也可以使用jetty)
x、执行初始化和回调
x、应用程序运行:一旦应用程序上下文构建完成,web服务器启动并监听请求,等待客户端请求的到来

为什么sprinboot的jar可以直接运行 ?

内嵌了web服务器
可执行的jar
所需要的依赖都在这个可执行的jar中

springboot项目打包需要使用spring-boot-maven-plugin,他会将springboot项目打成jar包
这个jar包内部也包含了很多jar,都是当前应用依赖的jar
当执行java -jar时,会从jar包 中找到manifest文件,文件中有mainclass,通过这个mainclass来加载当前jar中的所有子jar
并以一个新线程来启动我们启动类中的main函数

Springboot内置tomcat启动原理

在refresh方法中创建并启动的
x、先引入依赖Spring-boot-Start-web,此时会启动内置的tomcat
x、在springboot启动的时候,就会创建spring容器,在spring容器加载的时候就会解析自动配置类,从而获得tomcat服务的工厂,通过getWebServer为我们创建一个tomcat,并且启动,此时tomcat就可以等待请求了

Spring核心注解

SpringBootApplication
SpringBootConfiguration
EnableAutoConfiguration
ConditionalOnxxx
posted @ 2024-02-05 12:49  马崮蚂蚁哥  阅读(5)  评论(0编辑  收藏  举报