Spring Java EE @PostConstruct @PreDestroy Servlet生命周期的注解
JavaEE 5引入了2个作用于Servlet生命周期的注解:@PostConstruct
和@PreDestroy
,通过这两个注解可以实现Bean初始化之前和销毁之前的自定义操作。
Servlet执行流程图
@PostConstruct的使用说明
被@PostConstruct
修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet
的inti()
方法。被@PostConstruct
修饰的方法会在构造函数之后,init()
方法之前运行。
- 只有一个方法可以使用此注释进行注解;
- 被注解方法不得有任何参数;
- 被注解方法返回值为
void
; - 被注解方法不得抛出已检查异常;
- 被注解方法需是非静态方法;
- 此方法只会被执行一次
- 与
Spring
依赖注入的顺序:Constructor
>>@Autowired
>>@PostConstruct
举例如下:
@Service
public BizService {
@Autowired
private ModelDao modelDao;
public BizService () {
System.out.println("Constructor调用");
}
@PostConstruct
public void init() {
System.out.println("@PostConstruct在依赖注入完成后调用:ModelDao=" + modelDao);
}
}
@PreDestroy的使用说明
被@PreConstruct
修饰的方法会在服务器卸载Servlet
的时候运行,并且只会被服务器调用一次,类似于Servlet
的destroy()
方法。被@PreConstruct
修饰的方法会在destroy()
方法之后运行,在Servlet
被彻底卸载之前。