目录
1、实例化Bean
2、设置Bean的属性
3、初始化Bean
(1)、执行通知
(2)、初始化的前置方法
(3)、初始化方法
(4)、执行自定义方法
(5)、初始化的后置方法
4、使用Bean
5、销毁Bean
(1)、DestructionAwareBeanPostProcessor接口
(2)、DisposableBean接口
(3)、自定义方法
1、实例化Bean
实例化Bean就是为其分配内存空间。当客户端向容器请求一个尚未初始化的bean时,容器就会调用doCreateBean()方法进行实例化。
2、设置Bean的属性
当Bean的实例创建完成后就会对其进行属性设置,也就是依赖注入,将依赖的Bean复制到当前类的属性上。
3、初始化Bean
实例化和属性设置是 Java 级别的系统"事件",操作过程不可人工干预和修改的。而初始化则是给开发者提供的,可以在实例化之后、类加载完成之前进行自定义"事件"处理。
(1)、执行通知
执行各种Aware通知的方法:BeanNameAware、BeanFactoryAware、ApplicationContextAware等接口方法。通过这些接口可以让我们拿到BeanName、BeanFactory等资源。
(2)、初始化的前置方法
执行BeanPostProcessor的初始化前置方法postProcessBeforelnitialization(),对Bean进行一些自定义的前置处理。
(3)、初始化方法
依赖注入操作之后执行@PostConstruct的初始化方法。
(4)、执行自定义方法
如果有指定init-method()方法,就执行用户自定义的初始化方法
(5)、初始化的后置方法
执行BeanPostProcessor的初始化后置方法
4、使用Bean
初始化完成就表示Bean创建成功,之后就可以使用这个Bean。当该Bean不再需要时,就进行销毁操作。
5、销毁Bean
销毁Bean对象时执行@PreDestroy的销毁方法
(1)、DestructionAwareBeanPostProcessor接口
判断Bean是否实现DestructionAwareBeanPostProcessor接口,如果实现就执行DestructionAwareBeanPostProcessor后置处理器的销毁回调方法。
(2)、DisposableBean接口
判断Bean是否实现DisposableBean接口,如果实现就调用其实现的destroy()方法
(3)、自定义方法
判断这个Bean是否配置自定义的销毁方法,如果有就调用其配置的销毁方法。