Springboot_02
启动流程
默认扫描包
(Springboot常问的问题)
1.编写配置类
2.如何加载配置类
Springboot自动配置: springboot使用java配置类,完成了整合其他框架(1.编写配置类,放在了autoconfigure jar包中,在工程中引入(只要是Springboot工程,都会自动引入)2.如何加载这些配置类)
Condition:选择性实现创建bean(加条件,满足创建)
或者自定义注解,然后写一个类,继承Condition接口,自定义Condition在里面判断,
--获取bean,run方法返回值获取bean
条件装配两个注解@Conditional ,有一个Condition接口的实现类,作为判断条件
Springboot工程,顶级的包写引导类(规范)
引导类中的@SpringBootApplication 里面有包扫描的功能(继承@ComponentScan),引导类也是一个配置类(配置类注解@Configuration), 完成配置类的加载(@EnableAutoConfiguration)
Springboot如何加载到依赖的jar包配置类?
1.加个包扫描@ComponentScan("包的路径"),比较low,需要看源码
2.使用@Import(配置类.class)(单个加载)导入配置类,将@Import注解进行封装
3.定义@Enable**注解,对方式二的Import注解进行封装,使Import注解可以加载多个配置类
@Import4种用法
1直接导入bean@Import(User.class ),将User类实例化,注入spring容器
2@Import(UserConfig.class) 直接加载配置类,将配置类中@Bean注解的方法返回值注入spring容器
3导入ImportSelector的实现类:springboot使用的该种方式加载所有框架的配置类
4导入ImportBeanDefinitionRegistrar实现类
自动配置流程(重要):
1.提前编写了很多spring整合其他技术的配置类,放入到一个spring-boot-autoconfigure jar包中,Springboot工程会引入这个jar包
2.Springboot工程启动时,会加载这个jar包的所有配置类
3.所有配置类不会都装配到spring容器中,装配哪些取决于条件装配(通过注解),触发点是根据配置文件的起步依赖
配置类加载bean
自定义注解不冲突吗?
不冲突,写在注解上面的优先级比较高.
切换内置web服务器: 一般用的到吗? 一般用不到
默认为tomcat
排除Tomcat依赖
pom配置文件引入jetty依赖
切换成功
监听器怎么写?
监听器有以下几个角色:事件,事件源,监听器
1.创建实现类,实现四个接口,加上@Component注解,注入到spring容器中
什么时候触发?
Springboot的执行流程(重要)
执行创建初始化(先new,再run)
run方法过程:
初始化监听器SARL,开始做环境的准备和参数,打印图标,执行其他监听器,装配容器对象,执行bean中的操作
详细步骤:分为两步 1.SpringApplication创建,初始化 2.SpringApplication的run方法执行
1.SpringApplication创建,初始化:
SpringApplication开始启动,构建一个spring应用,初始化模块(下面这些都是同时启动),配置source,配置是否为web环境,创建初始化构造器,创建应用监听器,配置应用的主方法所在的类.
2.run方法开始执行,启动计时器,开始计时同时启动监听器,
同时启动SpringApplicatioRunListener(观察者模式)启动,监听,结束,开始配置环境,应用上下文等,
同时启动ConfigurableEnvironment(配置环境模块),创建配置环境(web/noweb),加载属性配置文件资源,配置监听
同时启动Banner配置,Springboot彩蛋
同时启动ConfigurableApplicationContext(应用上下文模块),开始创建应用上下文对象(web/noweb),基本属性配置,加载配置环境,ResourceLoader(资源加载器),配置监听,加载启动参数
Springboot端点监控(实用重要,可以监听状况,bean的加载情况,配置属性,日志信息等):
两方面Actuator:导入依赖坐标(创建的时候可以勾选),
访问URL路径(创建过程中有提示):返回json字符串,一个info,一个健康,
info:可以显示任意应用信息
健康:可以在配置文件中开启健康检查的完整信息(可以通过这个监控引入的组件是否健康,内部ping,pang机制)
可以在配置文件中设置将所有监控暴露:management.endpoint.health.show-details=always
基于Actuator实现的UI图形化界面:
两个角色,客户端(创建模块,导入依赖,在引导类上启用监控(@EnableAdminServer)),服务端(创建模块,导入依赖,配置相关信息,启动,访问OPS勾选,
需要在配置文件中指定admin.server的地址(如:spring.boot.admin.client.url=http://localhost:9000),开启所有配置(management.endpoints.web.exposure.include=*))
一般生产环境用,idea里面也可以查看,在浏览器中输入路径,访问图形化界面,可以查看请求次数,堆栈信息,线程,健康等
Springboot项目部署(实用重要):两种方式,jar包和war包,无论哪种,都要在配置文件中编译
jar包部署:先创建模块,勾选web,编写代码,在maven中打包,命令行java-jar ,访问Tomcat
war包部署:配置文件方式改为war包在核心启动类继承一个类,重写一个方法,打包,放Tomcat容器中运行

浙公网安备 33010602011771号