Spring Framework --wenyu6(完结)

思维导图总结(完结)

 

Java开发的六大基本原则

1.开闭原则

  • 修改时执行关闭原则,扩展时执行开放原则

  • 对增加新功能代码时,尽量保证不修改已有代码,然后将扩展的代码增加到项目中

2.里氏代换原则

  • 其实就是多态

  • 声明方法参数时,尽量使用父类类型代替具体的类型,这样就可以传递这个父类类型的任何子类对象都可以

3.依赖倒转原则

  • 面向抽象编程——面向接口编程

  • 在声明一个变量时,尽量使用父类类型或接口类型进行声明,而不应该时具体的类型

4.接口隔离原则

  • 定义接口时,接口功能尽量单一

5.合成/聚合复用原则

  • 尽量使用关联关系代替继承关系达到对象的复用

6.迪米特原则

  • 高内聚,低耦合

Spring框架流程

(循环依赖-currentHashMap,Lasy)

  1. 实例化一个ApplicationContext的对象;

  2. 调用bean工厂后置处理器完成扫描;

  3. 循环解析扫描出来的类信息;

  4. 实例化一个BeanDefinition对象来存储解析出来的信息;

  5. 把实例化好的beanDefinition对象put到beanDefinitionMap当中缓存起来,以便后面实例化bean;

  6. 再次调用bean工厂后置处理器;

  7. 当然spring还会干很多事情,比如国际化,比如注册BeanPostProcessor等等,如果我们只关心如何实例化一个bean的话那么这一步就是spring调用finishBeanFactoryInitialization方法来实例化单例的bean,实例化之前spring要做验证,需要遍历所有扫描出来的类,依次判断这个bean是否Lazy,是否prototype,是否abstract等等;

  8. 如果验证完成spring在实例化一个bean之前需要推断构造方法,因为spring实例化对象是 通过构造方法反射,故而需要知道用哪个构造方法;

  9. 推断完构造方法之后spring调用构造方法反射实例化一个对象;注意我这里说的是对象、对象、对象;这个时候对象已经实例化出来了,但是并不是一个完整的bean,最简单的体现是这个时候实例化出来的对象属性是没有注入,所以不是一个完整的bean;

  10. spring处理合并后的beanDefinition(合并?是spring当中非常重要的一块内容,后面的文 章我会分析);

  11. 判断是否需要完成属性注入

  12. 如果需要完成属性注入,则开始注入属性13、判断bean的类型回调Aware接口

  13. 判断bean的类型回调Aware接口

  14. 调用生命周期回调方法

  15. 如果需要代理则元成代理

  16. put到单例池——bean完成——存在apring容路当中

------CSDN韫钰

                                    SpringFramework到此结束!

                                  书山有路勤为径,学海无涯苦作舟!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值