介绍
@PreDestroy 与 @PostConstruct 相对应
@PostConstruct 用于初始化动作,功能类似代码块或静态代码块
@PreDestroy 与 @PostConstruct 相反,为程序环境整体结束前执行的动作
源码给出的注释说明如下:
PreDestroy注释在方法上用作回调通知,以表示实例正在被容器移除。带有PreDestroy注释的方法通常用于释放它一直持有的资源。除了Java EE 5中的应用程序客户端容器之外,所有支持PostConstruct*的容器管理对象都必须支持此注释
该方法不能有任何参数,除非是在拦截器的情况下,在这种情况下,它采用了拦截器规范定义的InvocationContext对象
PreDestroy拦截器方法不能抛出application异常,但如果同一拦截器除生命周期事件外,还插入了业务或超时方法,则可以声明它抛出已检查的异常,包括 java.lang.Exception。如果 PreDestroy拦截器方法返回值,则容器将忽略该值。
应用PreDestroy的方法可以是public、protected、package private 或 private。
该方法不能是静态的 (即 static)。
可能是 final。
如果该方法抛出一个未检查的异常,它将被忽略,但EJB可以处理异常的情况除外。
使用总结
即,使用该注解时,带有此注解的方法没有返回值以及入参,如果有异常抛出会被忽略
配套使用时类似如下:
@PostConstruct
public void initMethod1() {
........
}
@PreDestroy
public void destroyMethod1() {
..........
}
@PostConstruct
介绍链接
PostConstruct