![]() |
1
1
这是预期行为。只截获来自bean外部对bean方法的调用,而不截获来自bean内部对自身方法的调用。 从 weld/CDI 1.0.0 specification
这意味着你所描述的行为是完全有意的。这个
假设您有以下内容:
在另一个类中,您注入这个bean,实际上是向bean注入一个代理:
当你打电话的时候
生命周期回调也会发生类似的情况,拦截器会截获来自外部(容器)对生命周期方法的调用,但不会截获来自该postconstruct方法的同一bean上的任何方法。 这都是因为这些拦截器的拦截是由代理处理的。如果bean上的方法是“从外部”调用的,那么它实际上是在代理上调用的,并且代理确保在对实际bean对象执行实际方法调用之前调用任何已注册的拦截器。 然而,一旦您“进入”实际bean上的一个方法并从该bean调用任何其他方法,您就不会使用代理(而是直接在同一对象上调用方法),因此不会发生拦截。 |
![]() |
2
0
我以前没试过,但我想你需要这样的东西 question 或 this :
|