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被彻底卸载之前。