0%

SpringBoot源码分析

  • UML图
  • springboot核心流程源码
  • springboot企业扩展最佳实践

自我测评:

  1. 基于spingboot,谈谈springloc底层原理:
    • 三个平面的关系和创建过程
    • appcontext和bean工厂平面的内部细节,怎么加载bean定义,和bean如何实例化、初始化
  2. 描述一下bean生命周期:
    • 实例化bean的实现-反射;填充bean过程-循环依赖+三级缓存
    • 调用aware接口,调用beanPostProcessor方法,调用initmethod方法
  3. spring是如何解决循环依赖的问题:
    • 怎么产生的;实例化和初始化分离;流程
  4. BeanFactory与FactroyBean从底层源码层面解读它们的区别:
    • 第三平面的源码实现
  5. 基于springboot,怎么进行插件开发:
    • 扩展线

课程架构

UML-DEMO制作

spring到springboot演进

spring源码课程边界

三大平面

  • SpringApplication平面:Springboot.jar

    • 前置处理

      • 事件触发
      • 环境配置
      • 预装IOC
    • 进入第二平面处理refreshContext()

    • 后置处理
      • 事件触发
      • 异常处理
  • ApplicationContext平面:Springcontext.jar

    完成bean定义加载

    • 前置处理
      • 第三平面的预处理
    • 自动装配
      • 第二平面事件触发
      • 处理自动配置类、注解、扫包
      • 完成bean定义加载
      • 对bean定义的后置处理
    • 对接tomcat
    • 进入第三平面处理refreshContext()
  • BeanFactory平面:springbean.jar

    对所有bean定义轮询处理(完成bean的实例化)

    • 三级缓存
    • 创建bean
    • 填充属性
    • bean初始化

三大注解

容器内加组件

组件给属性

面向平面插件深度扩展

  • 前两个平面以事件为主
  • bean工厂平面扩展线分析
    • 配置中心、属性注入
    • 常见配件开发的注入点

面向技术组件化插件沉淀

某springboot框架组件分布

整体基于模块化快速服务开发(功能开箱即用,配置简单,测试简单)、多协议发布(支持HTTP,SOAP,DUBBO协议,一次编写多种协议调用,架构切换业务代码复用),内置各种监控指标的服务层开发框架。

服务开发及运行框架功能

开发流程

  • 开发环境准备
    • JDK1.8以上
    • maven私服配置
    • IDEA开发工具配置
  • 业务功能建模
    • 新建Maven工程
    • 确定系统需要的组件
    • 引入组件对应的starter
  • 服务开发
    • 编写InDto
    • 编写服务接口
    • 实现服务逻辑
  • 配置相关组件
    • 连接池配置
    • mybatis配置
    • 服务发布配置
  • 测试
    • 单元测试
    • 打包运行

可视化监控

ps:

  1. 看源码经常用到类图和时序图两个UML图
  2. 针对bean实例化的beanfactory平面,常见扩展手段是:实现接口
  3. spring.factories的扩展机制是仿照java中的SPI思想