Pav*_*l_K 7 java dependency-injection cdi jakarta-ee
假设我们有以下课程
public abstract class AbstractFoo {
@PostConstruct
private void doIt() {
//
}
}
public class Foo extends AbstractFoo {
@PostConstruct
private void doIt() {
//
}
}
Run Code Online (Sandbox Code Playgroud)
何时调用 AbstractFoo.doIt() 和 Foo.doIt() - 顺序是什么?
@PostConstruct是给定托管 bean 初始化时执行的最后一件事(相对于其在继承链中的位置)。从规格来看
容器必须确保:
@PostConstruct在初始化由 X 或 X 的超类声明的所有注入字段之后,将调用 bean 类型层次结构中的类 X 声明的初始化方法(即)。
@PostConstruct在调用 X 或 X 的超类声明的所有初始化方法之后,以及在初始化 X 或 X 的超类声明的所有注入字段之后,将调用 bean 类型层次结构中的类 X 声明的任何回调。
专业提示:使用 CDI 2.0,您可以使用@Inject声明初始化方法作为替代方法@PostConstruct,并限制在给定类中只能有一个初始化方法。这里的区别在于它仍然@PostConstruct是最后执行的,并且是唯一可以保证所有注入的组件可用的地方。
| 归档时间: |
|
| 查看次数: |
5718 次 |
| 最近记录: |