Я пытаюсь очистить свою концепцию о перехватчиках в Java EE. Я прочитал спецификацию Java EE, но я немного смущен. Пожалуйста, предоставьте мне полезную ссылку или учебник, который мог бы очистить мою концепцию. Как, Когда, Почему мы используем перехватчики?
Что такое перехватчики в Java EE?
Ответ 1
Перехватчики используются для реализации сквозных задач, таких как ведение журнала, аудит и безопасность, из бизнес-логики.
В Java EE 5 перехватчики разрешались только на EJB. В Java EE 6 перехватчики стали новой собственной спецификацией, абстрагированной на более высоком уровне, чтобы ее можно было более широко применять к более широкому набору спецификаций на платформе.
Они перехватывают вызовы и события жизненного цикла в соответствующем целевом классе. В принципе, перехватчик - это класс, методы которого вызывается при вызове бизнес-методов в целевом классе, происходят события жизненного цикла, такие как методы, которые создают/уничтожают bean, или метод тайм-аута EJB. Спецификация CDI определяет механизм безопасного типа для связывания перехватчиков с beans с использованием перехватчиков перехватчиков.
Ищите образец рабочего кода:
https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/interceptors
Java EE 7 также представила новую аннотацию @Transactional в API транзакций Java. Это позволяет выполнять транзакции, управляемые контейнером, за пределами EJB. Эта аннотация определяется как привязка перехватчика и реализуется средой Java EE. Рабочий образец @Transactional находится по адресу:
https://github.com/arun-gupta/javaee7-samples/tree/master/jta/transaction-scope
Ответ 2
Мне нравится это определение: Перехватчики - это компоненты, которые перехватывают вызовы методам EJB. Они могут использоваться для аудита и ведения журнала, когда и когда доступны EJB.
В другой ситуации они могут использоваться в ситуации, когда нам нужно проверить, имеет ли клиент полномочия или разрешение для выполнения транзакции на конкретном объекте в базе данных. Ну, вот где перехватчики пригождаются; они могут проверить, имеет ли клиент/пользователь этот орган, проверяя, может ли он/она вызывать этот метод для этого объекта базы данных или EJB.
Тем не менее, я бы по-прежнему взглянул на следующую статью и следующую tutorial на получить представление о том, как они используются в настройке/среде Java EE.
Ответ 3
Перехватчики используются для добавления возможностей AOP к управляемому beans.
Мы можем присоединить Interceptor к нашему классу с помощью аннотации @Interceptor. Всякий раз, когда метод в нашем классе называется, прикрепленный Interceptor будет перехватывать вызов этого метода и выполнять его метод перехватчика.
Это может быть достигнуто с помощью аннотации @AroundInvoke (см. пример ниже).
Мы можем перехватывать события жизненного цикла класса (создание объекта, уничтожать и т.д.) с помощью аннотации @AroundConstruct.
Основное различие между Interceptor и Сервлет-фильтры. Мы можем использовать Interceptor вне WebContext, но фильтры специфичны для веб-приложений.
Обычное использование перехватчиков - это регистрация, аудит и профилирование.
Для более подробного введения вы можете прочитать эту статью. https://abhirockzz.wordpress.com/2015/01/03/java-ee-interceptors/