代码
@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/