有关Spring理解
有关spring的理解
1.spring是一个IOC和AOP容器框架
2.spring是一个生态,构建java应用程序的基础设施
spring优点和缺点
优点
springIOC 集中管理了对象,降低了对象间的耦合度
AOP 支持了日志异常等得集中管理不需要处处写
封装了很多功能性代码大大简化了开发
IOC介绍
springIOC 控制了创建对象的权利,创建对象不是再由人来创建
创建对象时使用DI进行依赖注入。集中管理方便维护解耦
IOC使用了简单工厂模式+反射机制实现
创建时使用了类路径+反射调用getbean方法进行反射
DI和IOC区别
IOC是解决耦合的思想DI是解决IOC的一换
面向对象原则
单一职责 接口分离原则(例如手机充电啥的)
依赖倒置原则(
BeanFactory的作用
职责用来生产bean
也是容器 管理者Bean的生命周期
BeanDefination
存储bean的定义信息,决定Bean的生产方式
ApplicationContext 与BeanFactory
ApplicationContext(叫做上下文,或者容器)可以自动注册BeanDifination
BeanFactory不可以自动注册BeanDifination
ApplicationContext 可以提供更多职责而BeanFactory只是一个工厂只负责生产bean,相当于手机门户店,和手机生产工厂的功能。ApplicationContext作为Bean的容器更加智能更加好。
IOC容器加载过程
1.实例化一个ApplicationContext
2.调用Bean工厂后置处理器
3.循环解析扫描出来类信息
4.实例化一个BeanDefinition对象来存储解析出来的信息
5.把实例化好的BeanDefinition对象put到BeanDefinitionMap当中缓存起来,以便之后实例化Bean
6.再次调用Bean后置工厂处理器
定义态到纯净态
7.会干其他很多事情,例如是否需要使用beanPostProcessor等等,如果我们只关心如何实例化一个bean的话,那么这一步就是spring调用,检查实例化对象是否是单例bean 是否lazy是否prototype 是否abstract等等。
8.推断构造方法(反射出合适的构造方法)并构造使用实例化对象,但并不是一个完整的Bean ,这个时候Bean还没有进行属性注入。
纯净态到成熟态
9.处理合并后的BeanDeinition 判断是否需要属性注入,如果需要开始注入。(已经有是对象了)
初始化
10.如果实现AOP 属还需要1.判断Bean的回调接口,2.调用生命周期回调方法, 如果需要代理进行代理初始化 包括三个 .
创建完成
12.put到单例池存在Spring容器当中