Spring@PostConstruct和@PreDestroy注解详解

# @PostConstruct注解使用

## @PostConstructApi使用说明
> PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源,用 PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。应用 PostConstruct 注释的方法必须遵守以下所有标准:该方法不得有任何参数,除非是在 EJB 拦截器 (interceptor) 的情况下,根据 EJB 规范的定义,在这种情况下它将带有一个 InvocationContext 对象 ;该方法的返回类型必须为 void;该方法不得抛出已检查异常;应用 PostConstruct 的方法可以是 public、protected、package private 或 private;除了应用程序客户端之外,该方法不能是 static;该方法可以是 final;如果该方法抛出未检查异常,那么不得将类放入服务中,除非是能够处理异常并可从中恢复的 EJB。

总结来说就是使用@PostConstruct的注意事项有:
> * 方法没有参数
> * 方法没有返回值必须是void
> * 方法不能是static
> * 方法不能抛出异常
> * 方法只执行一次
> * 使用@PostConstruct的方法在SpringBean里只能有一个

## SpringBean 的初始化流程
```flow
st=>start: 开始
op1=>operation: Spring容器加载1
op2=>operation: 调用构造函数
op3=>operation: @PostConstruct方法调用
op4=>operation: init()调用
op5=>operation: 其他代码
op6=>operation: destroy()调用
op7=>operation: @PreDestroy方法调用
e=>end: 结束

st->op1->op2->op3->op4->op5->op6->op7->e

```

@PostConstruct方法是在init()方法之前构造方法调用之后执行的

## 项目应用场景
一般用于一些系统配置或者缓存数据的加载。

# @PreDestroy注解
...

猜你喜欢

转载自www.cnblogs.com/myblogs-miller/p/9139082.html