Как создать перехватчик CDI как синглтон?

Код

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


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

Вопрос 1

Создаются ли SomeInterceptor и OtherInterceptor при каждом вызове метода или нет?

Вопрос 2

Можно ли "настроить" класс Inteceptor так, чтобы он был одноэлементным? Например. SomeInterceptor и OtherInterceptor создаются только один раз.


person Cherry    schedule 04.03.2014    source источник
comment
что произойдет, если вы аннотируете его @ApplicationScoped?   -  person Karl Kildén    schedule 05.03.2014


Ответы (1)


Согласно спецификации CDI, на каждый компонент CDI, который он перехватывает, должен быть не более одного перехватчика, и его жизненный цикл привязан к одному из компонентов.
Итак, если ваш bean-компонент @ApplicationScoped, будет только один перехватчик «singleletone».
Также была эта ошибка в Weld.

person Yuri    schedule 05.03.2014