一、 Spring是什么?
Spring是一个轻量级的java开发框架,它是为了解决企业应用开发的复杂性而创建的,spring的核心是控制反转(IOC)和面向切面编程
(AOP),Spring的主要作用就是为代码解耦,降低代码间的耦合度,让对象和对象直接关系不是使用代码关联,而是通过配置来说明,即在
spring中说明对象的关系,使用ico降低业务对象之间耦合度,使得主业务在相互调用过程中,不用在自己维护关系了,即不用再自己创建要
使用的对象了,而是spring容器统一管理,自动注入;而AOP使得系统服务得到了最大的复用,且不用再由开发人员手工将系统级服务混到
主业务逻辑中,而是由spring容器统一完成织入。
二、Bean的生命周期过程
1、首先启动容器
2、通过getBean调用某个bean
3、通过beanDefinitionReader加载提前定义好的bea信息生成beanDefinition对象
然后存在一个Map结构中,Map的key是Bean的名字,value是beanDifinition对象
这个beanDifinition对象存的是描述了Bean的各种信息,比如Bean要实现的类
Bean的名字,作用域,构造方法注入时的参数,setter注入时的参数,自动注入模型
懒加载模型,初始化方法,销毁方法。
4、然后通过bean工厂后置处理器读取bean的定义属性信息,并可以修改它
同时可以设置多个bean工厂后置处理器,然后通过order属性来确认各个bean工厂后置处理器的执行顺序;
我们可以通过实现beanFactoryPostProcessor,并重写postProcessBeanFactory自定义bean工厂后置处理器
去修改对应的bean属性信息
5、BaanFactory通过反射创建对应的bean实例
6、实例化bean,通过调用bean的构造函数,生成beanWrapeer对象
7、通过调用populateBean方法完成填充属性
8、调用Aware方法,其中有实现了BeanNameAware接口就调用setBeanName;
实现BeanClassLoaderAware接口,就实现setBeanClassLoader;实现了BeanFactroyAware接口
调用setBeanFactory
9、 然后调用初始化bean之前的bean后置处理器的postProcessBeforeInitialization方法
10、然后执行初始化方法,实现InitializingBean接口,调用afterPropertoesSet,然后如果定义了初始方法
就执行自定义的初始化方法,init-method
11、 然后调用bean后置处理器的poerProcessAfterInitialization
12、然后bean就可以进行调用了
13、然后要销毁bean的时候,实现DisposableBean接口,第哦啊用destroy, 执行自定义销毁方法,desroy-method
14、结束