2、手写模拟Spring底层原理

2、手写模拟Spring底层原理_第1张图片

2、手写模拟Spring底层原理_第2张图片

2、手写模拟Spring底层原理_第3张图片

 2、手写模拟Spring底层原理_第4张图片

2、手写模拟Spring底层原理_第5张图片

 2、手写模拟Spring底层原理_第6张图片

2、手写模拟Spring底层原理_第7张图片

 2、手写模拟Spring底层原理_第8张图片

2、手写模拟Spring底层原理_第9张图片

 2、手写模拟Spring底层原理_第10张图片

 2、手写模拟Spring底层原理_第11张图片

 2、手写模拟Spring底层原理_第12张图片

创建BeanDefinition bean定义 

2、手写模拟Spring底层原理_第13张图片

 设置BeanDefinition 的类信息,作用域信息2、手写模拟Spring底层原理_第14张图片

 创建beanDefinitionMap

2、手写模拟Spring底层原理_第15张图片

 2、手写模拟Spring底层原理_第16张图片

 2、手写模拟Spring底层原理_第17张图片

2、手写模拟Spring底层原理_第18张图片

 2、手写模拟Spring底层原理_第19张图片

 scope为原型:

2、手写模拟Spring底层原理_第20张图片

  scope为单例:

2、手写模拟Spring底层原理_第21张图片

总结:

扫描@ComponentScan注解上的包扫描路径,将@Component注解修饰的类,生成BeanDefination,放入beanDefinitionMap,根据scope属性决定对象的创建时机,如果是单例,则创建出来放到singletonObjectsMap,如果是原型则不创建;在获取bean时,单例则直接从singletonObjectsMap获取,原型则再次创建bean。

@Component优化

2、手写模拟Spring底层原理_第22张图片

2、手写模拟Spring底层原理_第23张图片

 Autowired注解 做依赖注入

2、手写模拟Spring底层原理_第24张图片

2、手写模拟Spring底层原理_第25张图片

2、手写模拟Spring底层原理_第26张图片

初始化前  执行@PostContruct修饰的方法

2、手写模拟Spring底层原理_第27张图片

模拟InitializingBean初始化操作

2、手写模拟Spring底层原理_第28张图片

BeanPostProcessor 初始化前 初始化后

2、手写模拟Spring底层原理_第29张图片

2、手写模拟Spring底层原理_第30张图片

2、手写模拟Spring底层原理_第31张图片

遍历执行:

 2、手写模拟Spring底层原理_第32张图片

 2、手写模拟Spring底层原理_第33张图片

 BeanPostProcessor  实现AOP

2、手写模拟Spring底层原理_第34张图片

 先执行切面逻辑,再执行普通的方法test()。

 通过BeanPostProcessor  实现其他扩展功能。

如自定义@value。

2、手写模拟Spring底层原理_第35张图片

Aware回调接口 spring中实现对应的接口就会进行回调

2、手写模拟Spring底层原理_第36张图片

源码中的aware

2、手写模拟Spring底层原理_第37张图片

你可能感兴趣的:(#,Spring框架源码专栏,java,开发语言)