从代码层次上看来主要有一下加载方法及顺序过程:
创建过程
之前需要先通过读取xml或者通过注解扫描,加载bean到BeanDefinition中:
1.实例化bean
2.设置属性值
3.调用BeanNameAware的setBeanName方法
4.调用BeanClassLoaderAware的setBeanClassLoader方法
5.调用BeanFactoryAware的setBeanFactory方法
6.调用EnvironmentAware的setEnvironment方法
7.调用ApplicationEventPublisherAware的setApplicationEventPublisher方法
8.调用ApplicationContextAware的setApplicationContext方法
9.调用BeanPostProcessor的预初始化方法postProcessBeforeInitialization
10.调用InitializingBean的afterPropertiesSet方法
11.调用定制的初始化方法init-method方法
12.调用BeanPostProcessor的与后初始化方法postProcessAfterInitialization
销毁过程
bean的销毁(只有Singleton类型的bean才会调用,为Prototype类型的bean则由虚拟机自行销毁)
1.调用@PostConstruct注解方法
2.调用DisposableBean实现接口的destory方法
3.destory-method