java - 如何将 CDI 拦截器创建为单例?

标签 java ejb cdi interceptor

代码

@Interceptor(SomeInterceptor.class)
public class SomeClass {
    @Interceptor(OtherInterceptor.class)
    public Object method1 (Object param) {
        return param;
    }


    public Object method2 (Object param) {
        return param;
    }
}

问题一

SomeInterceptor 和 OtherInterceptor 是否在每个方法调用中创建?

问题2

是否可以“设置”拦截器类使其成为单例?例如。 SomeInterceptor 和 OtherInterceptor 只创建一次。

最佳答案

根据 CDI 规范,它拦截的每个 CDI bean 最多应该有一个拦截器,并且它的生命周期与 bean 之一相关联。
因此,如果您的 bean 是 @ApplicationScoped,那么将只有一个“单一”拦截器。
还有这个 bug in Weld .

关于java - 如何将 CDI 拦截器创建为单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22165444/

相关文章:

java - 如何从批处理脚本执行Java代码?

java - 使用 JAX-RS 时返回对象列表

java - 获取自 EJB 以来的 RESTful 列表

Java EE EJB 3.0 注释

dependency-injection - CDI,多态性: Is it possible to inject an implementation of bean B into a bean A based on a field initialized during @PostConstruct of A?

jboss - 混合使用 Spring MVC 和 CDI/JEE6 的最佳方式是什么?

java - Thread 构造函数如何直接接受 run 方法?

java - ThreadPoolTask​​Executor 没有执行提交给它的所有线程

java - 如何使用 maven-assembly-plugin 包含 package.jar

java - 如何使用 CDI(焊接)编写可插拔应用程序?