Что такое перехватчики в Java EE?

Я пытаюсь очистить свою концепцию о перехватчиках в Java EE. Я прочитал спецификацию Java EE, но я немного смущен этим. Пожалуйста, предоставьте мне полезную ссылку или учебник, который может очистить мою Концепцию. Как, когда, Почему мы используем перехватчики?

3 ответов


перехватчики используются для реализации сквозных проблем, таких как ведение журнала, аудит и безопасность, из бизнес-логики.

в Java EE 5 перехватчики были разрешены только на EJBs. В Java EE 6 перехватчики стали новой собственной спецификацией, абстрагированной на более высоком уровне, чтобы ее можно было более обобщенно применять к более широкому набору спецификаций в платформе.

они перехватывают вызовы и события жизненного цикла в связанном целевом классе. В принципе, перехватчик-это класс, методы которого вызываются при вызове бизнес-методов в целевом классе, событиях жизненного цикла, таких как методы создания/уничтожения компонента, или метод таймаута EJB. Спецификация CDI определяет типобезопасный механизм для связывания перехватчиков с бобами с помощью Привязок перехватчиков.

найдите образец рабочего кода at:

https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/interceptors

Java EE 7 также представила новую аннотацию @Transactional в API транзакций Java. Это позволяет иметь управляемые контейнером транзакции вне EJB. Эта аннотация определяется как привязка перехватчика и реализуется средой выполнения Java EE. Рабочий образец @Transactional at:

https://github.com/arun-gupta/javaee7-samples/tree/master/jta/transaction-scope


Мне нравится это определение: перехватчики-это компоненты, которые перехватывают вызовы методов EJB. Они могут использоваться для аудита и ведения журнала по мере доступа к EJBs.

в другой ситуации они могут использоваться в ситуации, когда нам нужно проверить, имеет ли клиент полномочия или разрешение на выполнение транзакции по конкретному объекту в базе данных. Ну, вот где перехватчики пригодятся; они могут проверить, имеет ли клиент / пользователь эти полномочия, проверив может ли он / она вызвать этот метод на этом объекте базы данных или EJB.

тем не менее, я бы все равно посмотрел на следующее статьи и после учебник чтобы получить представление о том, как они используются в настройке/среде Java EE.


перехватчики используются для добавить возможность AOP на управляемых бобов.

мы можем прикрепить перехватчик к нашему классу, используя аннотацию @Interceptor. всякий раз, когда метод в наш класс называется, присоединенный перехватчик перехватит вызов этого метода и выполнит его метод перехватчика.

Это может быть достигнуто с помощью аннотации @AroundInvoke (см. пример ниже ).

Method Interceptors

мы можем перехватывать события жизненного цикла класса (создание объекта, уничтожение и т. д.) С помощью аннотации @AroundConstruct.

главное отличие между перехватчиком и Сервлет Фильтры мы можем использовать перехватчик вне WebContext, но фильтры специфичны для веб-приложений.

используют перехватчики журналов, аудита и профилирования.

для более подробного ознакомления, вы можете прочитать это статья. https://abhirockzz.wordpress.com/2015/01/03/java-ee-interceptors/