Множественные перехваты методов в Guice
Я работаю с функцией перехвата метода Guice. Что мне нужно знать, это как правильно реализовать несколько перехватчиков, в форме:
this.bindInterceptor(Matchers.any(), Matchers.any(), new Interceptor1(), new Interceptor2());
Что конкретно происходит, если в обоих перехватчиках вызывается продолжить ()? Перехваченный метод вызывается дважды? Или continue () в первом перехватчике вызывает второй перехватчик, который затем вызывает метод? Или только у одного перехватчика должна быть продолжить ()?
Спасибо
1 ответ
Оба перехватчика могут (и должны) вызывать proceed
, Таким образом, они могут использоваться как независимые аспекты (например, транзакции и ведение журнала). Фактически, если вы не вызываете исходящий от вашего внешнего перехватчика, следующий перехватчик не сработает.
Перехватчики методов будут вызываться стековым способом, основанным на порядке bindInterceptor
звонки. В вашем примере это будет выглядеть так:
Interceptor1 entry
Interceptor1 proceed
Interceptor2 entry
Interceptor2 proceed
Method
Interceptor2 exit
Interceptor1 exit