一、spring是什么?
spring是框架,具有完整的生态链,也就是spring的全家桶,对于spring来说,我们最关心的就是ioc(控制反转)--这是一种思想,具体实现为DI(依赖注入)和AOP(面向切面)
二、关于IOC的底层流程图(后续持续补充细节)
1.语言描述
对于spring来说,ioc的最终目的就是不需要我们在new对象了,而是由容器提供我们需要的对象,先概述流程,然后在下面对流程进行详解;
问题一:容器是怎么产生的?
spring的底层提供beanFactory接口这个接口,实现类通过这个接口产生容器。
问题二:容器中的对象是怎么产生的?
容器中的对象我们一般都是指用户自定义的对象(不包含容器在执行过程中需要的那么对象),
1.解析:对于一般对象我们都是在xml文件、properties文件或者yaml文件中使用<baen></baen> 定义bean,然后通过BeanDefinitionReader接口进行解析加载到容器中,
2.现在有了BeanDefinition接口对象,
3.BeanFactoryPostProceessor接口
然而我们在xml文件中一定写过<property name="url" value="${jdbc.url}">,当我们把这种 数 据加载进行之后是不能创建对象的,因为你的数据还是链接,就需要将数据进行替换为值,所以BeanFactoryPostProceessor接口就行干这事的,当然还会对bean设置一些属性值,
4.实例化:给对象分配内存地址,
5.初始化阶段
5-1:填充属性
5-2:设置Aware接口属性(如果bean在创建后想使用容器的某些对象)
5-3:BeanPostProcessor.before(相当于aop)
5-4:执行init-method方法(<bean init-method="">指定的方法)
5-5:BeanPostProcessor.before(相当于aop)
6.使用
7.销毁