Spring Boot
- SpringBoot
- 约定优先于配置
- 对一些东西设置一个大众化的合理默认值,大大减少了配置量
- 1.SpringBoot starter 默认打包基础依赖
- 2.用javaconfig方式配置,提供大量注解
- 3.自动配置,通过依赖引入各种starter
- 4.内置tomcat/jetty/undertow,只要java运行环境即可
- Spring Initialiar快速构建
- Springboot项目启动类放在外层目录下,因为只会扫描当前和子包
- spring-boot-devtools插件热部署
- base-classloader:加载第三方jar的文件
- restartclassloader:加载本地编写的文件
- 全局配置文件
- 1.先去根目录的config找配置文件
- 2.根目录下
- 3.classpath下的config目录
- 4.classpath下的根目录
- 优先级:1->2->3->4
- properties和yaml文件以properties优先(2.4.0之前的版本)
- @ConfigurationProperties批量注入
- 用set方式注入实体的属性在配置文件中
- 指定具体包的日志级别,指定日志输出格式,指定日志文件
- springboot替换日志框架直接引入直接排除原来的包引1入2springboot对应的其他包
- @enableautoconfiguration注解主要是借助@import注解收集特定组件
- @Autoconfigurationpackage注解注册Rigster的BasePackage
- 注册一个autoconfigurationimportselector组件类:实现了很多Aware接口和deferredimportselector接口...
- 自动配置入口就是Deferredimportselector的getImports方法
- 自动装配步骤
- 1.获取spring.factories(jar包下有很多)的自动配置类
- 2.排除需要移除的配置类(因为有些用不到和注解中配置排除)
- filter方法
- 过滤不满足@conditional...条件的自动配置类
- 3.出发autoconfigurationimportevent事件
- 4.讲
- 5.对有@order配置类排序
- 最终获取到所有需要执行的自动配置类来注册bean到IOC容器(main方法中的run方法运行时)
- @ComponentScan注解扫描路径是启动类所在的包以及子路径的类
- run方法过程
- 一:实例化springapplication
- 1.根据应用类型(根据classpath是否存在某些类来判断)
- 2.初始化classpath下配置的applacationcontextinitializer的spring.factories中的几个初始化器实例
- 3.跟上述步骤一样生成几个拦截器实例
- 4.根据调用栈,判断main方法的类名
- 二:springapplication.run
- 1.获取并启动监听器
- SpringApplicationRunnListener启动该监听器
- 2.构造应用上下文环境
- 3.初始化应用上下文
- 4.刷新应用上下文前的准备
- 向上下文设置属性,把核心启动类等放入容器中
- 5.刷新应用上下文
- 此处是交由Spring完成refresh方法,invokeBeanFactoryPostProcessors方法(主要)
- 5.1 Resource定位
- 5.2 BeanDefinition载入
- 5.3 注册BeanDefinition
- 6.刷新应用上下文的拓展接口
- 自定义start,封装一个功能模块
- 动态数据源、登录模块、基于AOP技术实现的日志切面
- 热插拔:通过@ConditiuonOnBean注解来标记配置类,然后自定义一个热插拔注解去标记配置类
- 内嵌TOMCAT
- tomcat也有自动配置类,main中的run方法中的onRefresh方法初始化tomcat容器,finishrefresh最终完成servlet和tomcat的加载
- SpringBoot动态数据源
- SpringBoot 缓存深入
- JSR107核心接口