JavaCDI:拦截器有作用域吗?

JavaCDI:拦截器有作用域吗?,java,jakarta-ee,cdi,guice,weld,Java,Jakarta Ee,Cdi,Guice,Weld,CDI中拦截器的范围是什么 阿卡,这合法吗?我会在每个被调用的地方得到这个拦截器的相同实例吗 @RequestScoped public class SalesForceControllerInterceptor { @Inject private Logger log; @AroundInvoke public Object intercept(InvocationContext context) throws Exception { ... } 是

CDI中拦截器的范围是什么

阿卡,这合法吗?我会在每个被调用的地方得到这个拦截器的相同实例吗

@RequestScoped
public class SalesForceControllerInterceptor {
    @Inject
    private Logger log;

    @AroundInvoke
    public Object intercept(InvocationContext context) throws Exception {
...
    }

是的,拦截器的生命周期与任何其他cdi管理的bean一样。。。因此,默认情况下它们是依赖的,但您可以使用所需的任何范围对它们进行注释。 在您的示例中,同一请求中的所有调用共享侦听器。如果您需要的是“每个调用的同一拦截器”,则应该考虑更广泛的范围,如会话或应用程序。
更新:检查注释:对于cdi 1.1,拦截器必须是从属作用域,而Weld 2.2.6将其他作用域视为错误。

表示拦截器应该是从属的,否则会导致不可移植的行为结果。例如,Weld 2.2.6不允许作用域不是从属的拦截器,并将其视为定义错误。

只是一个后续问题。。。我试图将一个
@RequestScoped
拦截器注入apachetomee上的
@ApplicationScoped
拦截器。RequestScope首先触发,并存储一个值。但是当appscoped拦截器启动时,它得到了一个新的requestscoped拦截器实例。CDI1.1规范说拦截器应该是依赖的,否则会导致不可移植的行为。例如,Weld 2.2.6不允许作用域不是Dependent的拦截器,并将其视为定义错误。@jpangamarca:interest。你应该提供这个答案,因为这使我的答案是错误的。将更新。@jpangamarca您知道在新的CDI版本规范中是否允许具有非依赖作用域的拦截器吗?@lujop我不知道。