bean的生命周期

时间:2023-02-03 14:43:32

bean的生命周期

1、实例化

        当程序加载applicationContext.xml文件时,我们把bean(前提是scope=singleton)实例化到内存

2、调用set方法设置属性

3、若实现了bean名字关注接口(BeanNameAware),可以通过setBeanName获取id号

4、若实现bean工厂关注接口,(BeanFactoryAware),则可以获取BeanFactory

5、若实现ApplicationContextAware接口,则调用方法

1 //该方法传递ApplicationContext
2 public void setApplicationContext(ApplicationContext arg0)
3 throws BeansException {
4 // TODO Auto-generated method stub
5 System.out.println("setApplicationContext"+arg0);
6
7 }

6、若bean和一个后置处理器关联,则自动调用before方法

 1 public class MyBeanPostProcessor implements BeanPostProcessor {
2
3 @Override
4 public Object postProcessAfterInitialization(Object arg0, String arg1)
5 throws BeansException {
6 // TODO Auto-generated method stub
7 System.out.println("postProcessAfterInitialization 被调用");
8 System.out.println(arg0+"被调用时间是"+new java.util.Date());
9 return arg0;
10 }
11
12 @Override
13 public Object postProcessBeforeInitialization(Object arg0, String arg1)
14 throws BeansException {
15 // TODO Auto-generated method stub
16 System.out.println("postProcessBeforeInitialization 被调用");
17 System.out.println(arg0+"被调用时间是"+new java.util.Date());
18 return arg0;
19 }
20
21 }

7、若实现InitializingBean接口,则会调用afterPropertiesSet

8、若<bean init-method="init" />则在bean定义自己的初始化方法

9、若bean和一个后置处理器关联,则会自动调用Object postProcessAfterInitialization方法

10、使用bean

11、关闭容器

12、通过实现DisposableBean接口调用方法Destory

13、可以在<bean destory-method="fun1"/>调用定制的销毁方法