[英]In need to create method interceptors in plain java (ee, servlets and POJOs) to use in weblogic, what can I use to do so?
[英]What are Interceptors in Java EE?
我試圖澄清我關於 Java EE 中攔截器的概念。 我已經閱讀了 Java EE 規范,但我對此並不感到困惑。 請為我提供一些有用的鏈接或教程,它們可以清除我的概念。 我們如何、何時、為什么使用攔截器?
攔截器用於從業務邏輯實現跨域關注,例如日志記錄,審計和安全性。
在Java EE 5中,僅允許在EJB上使用攔截器。 在Java EE 6中,Interceptor成為了自己的新規范,在更高層次上進行了抽象,因此它可以更廣泛地應用於平台中更廣泛的規范集。
它們攔截相關目標類的調用和生命周期事件。 基本上,攔截器是一個類,其方法在調用目標類上的業務方法時調用,生命周期事件(如創建/銷毀bean的方法)或EJB超時方法發生。 CDI規范定義了一種類型安全機制,用於使用攔截器綁定將攔截器與bean相關聯。
在以下位置查找工作代碼示例:
https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/interceptors
Java EE 7還在Java Transaction API中引入了一個新的@Transactional注釋。 這允許您在EJB之外擁有容器管理的事務。 此批注被定義為攔截器綁定,並由Java EE運行時實現。 @Transactional的工作樣本位於:
https://github.com/arun-gupta/javaee7-samples/tree/master/jta/transaction-scope
攔截器用於向托管bean 添加AOP功能 。
我們可以使用@Interceptor注釋將Interceptor附加到我們的類。 每當調用我們類中的方法時 ,附加的Interceptor將攔截該方法調用並執行其攔截器方法。
這可以使用@AroundInvoke注釋來實現(參見下面的示例)。
我們可以使用@AroundConstruct注釋攔截類的生命周期事件(對象創建,銷毀等)。
Interceptor和Servlet過濾器之間的主要區別是我們可以在WebContext之外使用Interceptor,但過濾器特定於Web應用程序。
攔截器的常見用途是記錄,審計和分析。
有關更詳細的介紹,您可以閱讀本文。 https://abhirockzz.wordpress.com/2015/01/03/java-ee-interceptors/
在向 Controller 類發送請求之前和向響應發送請求之前,您可以將 Interceptor 用於要執行某些任務的地方。 例如:- 在這種情況下,您想在向 Controller 類發送請求之前驗證身份驗證令牌,您可以使用攔截器。 示例代碼:
@Component
public class AuthInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse
response, Object handler) throws Exception {
//Here you can write code to validate the auth token.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.