Spring Boot

73 阅读3分钟
  • 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核心接口