思维导图学Java-图解Spring[Core,MVC,Boot]

1,218 阅读1分钟

本文思维导图主要来自于对于Spring框架的源码阅读,以及tiny-spring项目,如果有疏漏的地方,还请不吝指出

1. BeanFactory

1.1 IOC

BeanFactory为Spring中关键接口,主要用于读取配置,并获取Bean,思维导图如下所示:

其中构造函数会实例化对应的BeanDefinitionReader,用于获取BeanDefinition

BeanFactory核心函数getBean(name)

1.2 AOP

Spring中用于进行Bean增强的主要为BeanPostProcessor,AOP也在此处介入,Spring中AutoProxyCreator负责增强对应的Bean;

Spring中的AOP采用AspectJ风格,具体实现类为AspectJAwareAdvisorAutoProxyCreator,其思维导图如下:

其中AspectJ定义了一套AOP方便的标准,具体如下:

1.3 ApplicationContext

ApplicationContext是建立在BeanFactory接口之上的更高阶的接口,除了BeanFactory之外,它还提供了:

  • 事件机制
  • 标识描述
  • 对BeanFactory的增强机制BeanFactoryPostProcessor,是工厂模式又一应用
  • 配置环境信息

ApplicationContext的构造函数

ApplicationContext的核心方法为refresh方法,其方法思维导图如下,ApplicationContext中的postProcessBeanFactory默认为空实现,invokeBeanFactoryPostProcessors中的BeanFactoryPostProcessors默认也为空数组:

obtainFreshBeanFactory与prepareBeanFactory负责获取一个新的BeanFactory并进行必要的准备

invokeBeanFactoryPostProcessors的实现如下,注意BeanPostProcessor下还有BeanFactoryPostProcessor,相应的调用顺序也按照以下方式来:

  • PriorityOrdered
  • Ordered
  • 普通

2. SpringMVC

SpringMVC是基于Servlet规范的框架,其核心为DispatcherServlet

3. SpringBoot

SpringBoot在ApplicationContext的基础上:

  • 增加空方法实现,如postProcessBeanFactory,onRefresh
  • 增加了BeanFactoryPostProcessor,分别对BeanFactory进行增强

其中SpringBoot注册了一个BeanDefinitionRegistryPostProcessor,ConfigurationClassPostProcessor负责进行组件扫描,以及配置类的解析

完善中

参考资料: