Spring5.x源码深度解析
在第五次阅读Spring源码后, 有了更深的理解, 决定再创建一个专栏用于Spring5的源码解析
AnEra
厚积薄发, 天道酬勤
展开
-
使用idea和gradle编译spring5.x源码
版本工具:spring5.0.x,gradle4,9,jdk1.8_131,kotlin1.2.51,groovy2.4.15,IntelliJ IDEA 2018-2详细步骤及坑见下:1,下载gradle,可以去官网下载,gradle版本需要4.2以上,小编这里选择的是gradle4.9版本。 &n...转载 2019-09-26 17:34:22 · 1390 阅读 · 1 评论 -
Spring源码解析一 (IOC容器初始化深度解析)
IOC容器的初始化的三种方式XmlBeanFactory ClassPathXmlApplicationContext AnnotationConfigApplicationContext三种初始化方式流程图:分析: 由调用图可以看到不论使用哪一种方式去初始化IOC容器, 注册BeanDefinition的工作都是由DefaultListableBeanFactory的r...原创 2020-01-07 15:19:24 · 1145 阅读 · 0 评论 -
Spring源码解析二 (IOC容器初始化方式一:XmlBeanFactory)
目录1. 配置资源加载2. 配置资源解析以及根节点的获取3. 注册BeanDefinition3.1 默认命名空间解析3.1.1 标签处理解析3.1.2 BeanDefinition的注册3.2 自定义命名空间解析3.2.1 获取名称处理器3.2.2 根据标签名称获取解析器3.2.3 解析自定义标签使用示例(已过时): XmlBeanFactory...原创 2020-01-06 20:13:31 · 1044 阅读 · 0 评论 -
Spring源码解析三 (IOC容器初始化方式二:ClassPathXmlApplicationContext)
目录1. 刷新, 获取Bean工厂1.1 Bean工厂的刷新以及相关配置1.2 BeanDefinition的预加载2. 注册BeanDefinition2.1 默认命名空间解析2.1.1 标签处理解析2.1.2 BeanDefinition的注册2.2 自定义命名空间解析2.2.1 获取名称处理器2.2.2 根据标签名称获取解析器2.2.3 解析自定义...原创 2020-01-07 15:16:15 · 930 阅读 · 0 评论 -
Spring源码解析四 (IOC容器初始化方式三: AnnotationConfigApplicationContext[包路径配置方式])
目录1. 注册内部处理器类2. 注册普通BeanDefinition3. 应用环境刷新使用示例:AnnotationConfigApplicationContext annotationConfigApplicationContext11 = new AnnotationConfigApplicationContext("com.ioc.lic");UserService ...原创 2020-01-07 16:20:39 · 1185 阅读 · 0 评论 -
Spring源码解析五 (IOC容器初始化方式四: AnnotationConfigApplicationContext[Java配置类方式])
目录1. 注册内部处理器类2. 注册Java配置类3. 注册普通BeanDefinition3.1刷新, 获取Bean工厂3.2Bean工厂配置的设置3.3. 激活Bean工厂后处理器(重点)3.4注册bean后处理处理器3.5 初始化非延迟加载的的单例Bean (延迟加载的单例将在第一次调用的时候初始化)3.6 应用上下文刷新结束, 进行事件广播使...原创 2020-01-07 19:36:55 · 948 阅读 · 0 评论 -
Spring源码解析六 (Bean的初始化)
目录1. 循环依赖解决2. FactoryBean情况处理3. 依赖检查4. Bean的创建4.1 实例化bean4.2 依赖处理4.3 属性填充4.4 执行初始化方法5. Bean生命周期流程6. IOC容器的关闭6.1 Web应用中容器的销毁6.2 非Web应用中容器的销毁在前面分析IOC容器时有说到, 在IOC容器初始化结束后, 会开始初始...原创 2020-01-08 19:46:21 · 792 阅读 · 0 评论 -
Spring源码解析七 (AOP深度解析)
目录1. 目标bean实例化完成后调用初始化方法2. 初始化方法执行之后应用后处理器(BeanPostProcessor)3. 尝试扩展目标bean4. 获取所有适合目标bean的所有Advisor4.1从容器获取所有已注册的增强4.2寻找所有的增强中适用于目标bean的增强5. 创建代理(重点)5.1 获取AOP代理(JdkDynamicAopProxy/Cg...原创 2020-01-05 16:51:29 · 2011 阅读 · 1 评论