Spring Bean的生命周期

Spring管理Bean的生命周期,平时用的比较多的是两个注解@PreDestory@PostConstruct

@PostConstruct注解的方法是在bean初始化化之后被调用的方法。

@PreDestory注解的方法是实例在销毁之前被调用的方法。

除此之外,实现InitializingBean接口的话,会多一个方法afterPropertiesSet()表示属性注入之后会调用的方法。实现DisposableBean也会多一个方法destroy()表示实例销毁时调用的方法。

如果bean是声明在xml中的,那么init-method属性,可以指定bean初始化时调用的方法。

看到这里,大部分人应该已经晕了,到底这些初始化和销毁的方法,先后顺序到底是怎样的呢

看下面的代码, 除了以上说到的几个方法,还有默认的构造方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class BeanLifeTest implements InitializingBean,DisposableBean {
private String preFix = "BeanLifeTest: ";
@PostConstruct
public void postConstruct() {
System.out.println(preFix + "postConstruct ");
}
public BeanLifeTest() {
System.out.println(preFix + "construct ");
}
public void init() {
System.out.println(preFix + "init-method");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println(preFix + "after properties set");
}
@PreDestroy
public void preDestroy() throws Exception {
System.out.println(preFix + "pre detory");
}
@Override
public void destroy() throws Exception {
System.out.println(preFix + "detory");
}
}

运行结果

1
2
3
4
5
6
BeanLifeTest: construct
BeanLifeTest: postConstruct
BeanLifeTest: after properties set
BeanLifeTest: init-method
BeanLifeTest: pre detory
BeanLifeTest: detory


参考文档:

http://blog.csdn.net/luccs624061082/article/details/3928827>5
http://www.iteye.com/topic/1046993