spring源码学习笔记
文章平均质量分 60
spring源码学习笔记
tobebetter9527
这个作者很懒,什么都没留下…
展开
-
18-spring 事务
文章目录1. xml和注解配置方式的对象2.spring事务传播特性3. 注解事务的初始化流程4. 创建事务信息流程图5. 事务回滚流程图1. xml和注解配置方式的对象2.spring事务传播特性事务传播行为类型说明PROPAGATION_REQUIRED如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。PROPAGATION_SUPPORTS支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_原创 2023-10-20 22:12:52 · 383 阅读 · 0 评论 -
17-spring aop调用过程概述
CGLIB$CALLBACK_0的advised对象的targetSource有一个普通对象MyCalculate.原创 2023-10-20 22:12:17 · 405 阅读 · 0 评论 -
16-spring AOP核心对象的创建
参考官方解释:https://docs.spring.io/spring-framework/docs/5.2.9.RELEASE/spring-framework-reference/core.html#aop-introduction-defn。原创 2023-10-20 22:11:07 · 430 阅读 · 0 评论 -
15-bean生命周期,循环依赖
文章目录1. bean生命周期1. bean生命周期原创 2023-10-20 22:09:02 · 448 阅读 · 0 评论 -
14-bean创建流程5-初始化和循环依赖
Bean是分为实例化和初始化,可以在实例化之后就把半成品的bean实例暴露,让其他bean引用,后续半成品的bean初始化并不影响其内存地址。原创 2023-10-20 22:08:18 · 500 阅读 · 0 评论 -
13-bean创建流程4-反射创建bean
SmartInstantiationAwareBeanPostProcessor接口定制构造函数/***/@Nullableif (ctors!= null) {MergedBeanDefinitionPostProcessor接口。原创 2023-10-15 20:53:51 · 111 阅读 · 0 评论 -
12-bean创建流程3
createBean方法里面的resolveBeforeInstantiation方法,InstantiationAwareBeanPostProcessor接口创建一个代理对象返回。spring创建bean的方式有哪几种。原创 2023-10-15 20:53:13 · 124 阅读 · 0 评论 -
11-bean创建流程2
单例模式的bean只会被创建一次,IoC容器会缓存该bean实例以供下次使用;原型模式的bean每次都会创建一个全新的bean,IoC容器不会缓存该bean的实例。那么如果现在有一个单例模式的bean引用了一个原型模式的bean呢?如果无特殊处理,则被引用的原型模式的bean也会被缓存,这就违背了原型模式的初衷,这时使用lookup-method注入可以解决该问题。原理是:使用cglib生产代理类,复写方法。原创 2023-10-15 20:52:26 · 141 阅读 · 0 评论 -
10-bean创建流程1一finishBeanFactoryInitialization(ConfigurableListableBeanFactory
从PostProcessorRegistrationDelegate#invokeBeanFactoryPostProcessors()的第一个beanFactory.getBeanNamesForType(BeanDefinitionRegistryPostProcessor.class, true, false)进入。注意这里的递归调用。原创 2023-10-15 20:51:47 · 435 阅读 · 0 评论 -
09-消息资源和监听器的初始化
是AbstractApplicationEventMulticaster的内部私有的类,持有applicationListeners和applicationListenerBeans。逻辑很简单,如果beanFactory有多播器,仅打印日志,如果没有则创建SimpleApplicationEventMulticaster多播器。监听器运用到观察者模式。具体可以看:https://refactoringguru.cn/design-patterns/observer。原创 2023-10-15 20:51:11 · 105 阅读 · 0 评论 -
08-注册BeanPostProcesser
这里提到的重点是代理的创建是在 post-processors的postProcessAfterInitialization方法之后,即初始化之后。registerBeanPostProcessors(beanFactory)的方法过程。允许对新建实例的定制修改,比如检查标记接口或用代理包装他们。见名知意,在bean初始化之前处理bean。在bean初始化之后处理bean。原创 2023-10-15 20:50:36 · 384 阅读 · 0 评论 -
07-ConfigurationClassPostProces的解析
主要是来解析@Configuration注解的类,比其他BeanFactoryPostProcessor优先执行。原创 2023-10-15 20:49:35 · 329 阅读 · 0 评论 -
06-spring的beanFactoryPostProcessor的执行
在BeanFactoryPostProcessor执行提前执行,主要用于修改注册BeanDefinition。原创 2023-10-15 20:47:21 · 130 阅读 · 0 评论 -
05-spring的bean工厂准备工作
直接上代码定义基本类....自定义属性编辑器继承PropertyEditorSupport@Override自定义属性登记员@Overridexml信息。原创 2023-10-15 20:46:39 · 170 阅读 · 0 评论 -
04-spring配置文件加载过程
XmlBeanDefinitionReader继承AbstractBeanDefinitionReader,AbstractBeanDefinitionReader实现BeanDefinitionReader。注意XmlBeanDefinitionReader的构造函数,beanFactory作为参数传入其构造函数,AbstractBeanDefinitionReader有个成员变量registry, 这就是beanFactory的注册中心。beanFactory的bean注册中心。原创 2023-10-15 20:45:54 · 94 阅读 · 0 评论 -
03-spring启动流程细节
AbstractApplicationContext#initPropertySources()扩展,子类重写方法即可。注意子类调用父类构造器和子类调用子类其他构造器。读取bean配置信息。原创 2023-10-15 20:45:07 · 99 阅读 · 0 评论 -
02-spring源码概述-debug流程
文章目录1. 两个主要ApplicationContext的类继承结构图1.1 ClassPathXmlApplicationContext1.2 ClassPathXmlApplicationContext2. DefaultListableBeanFactory类继承结构图1. 两个主要ApplicationContext的类继承结构图1.1 ClassPathXmlApplicationContext1.2 ClassPathXmlApplicationContext2. DefaultL原创 2023-10-15 20:44:01 · 94 阅读 · 0 评论 -
01-spring源码概述
以上Bean的生命周期只是多数情况下bean的生命周期,实际上Bean的创建不仅仅是反射一种,也有其他方式,比如FactoryBean。在不同的阶段要处理不同的工作,应该怎么办?观察者模式:监听器,监听事件,多播器(广播器)。原创 2023-10-15 20:43:09 · 168 阅读 · 0 评论 -
0-spring源码开班典礼--学习源码的方法论
这几项内容,设计模式需要比较熟,其他可以后续慢慢补。原创 2023-10-15 20:40:59 · 202 阅读 · 0 评论