日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java EE拦截器

發布時間:2023/12/3 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java EE拦截器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歷史

我認為重要的是要看一下Java EE中的Interceptor的發展,因為它是從EJB特定的項目開始的,后來又演變成一個單獨的規范,現在可供其他Java EE規范擴展,這一事實很簡單。

版本1.0

攔截器最初是在EJB 3.0 ( Java EE 5的一部分)中引入的。 攔截器沒有專門的規范,但它們的版本為1.0,并通過簡單的注釋向托管bean(POJO)購買了與AOP相關的基本功能:

  • @AroundInvoke –注釋包含目標類方法的攔截邏輯的方法
  • @Intercerptors –將攔截器類與其目標類/方法綁定在一起
  • 通過部署描述符為整個模塊(EJB JAR)配置攔截器的能力
  • @ExcludeDefaultInterceptors –使部署描述符中定義的默認攔截器靜音
  • @ExcludeClassInterceptors –使類的特定方法/構造函數的全局定義(類級別)攔截器靜音

攔截器1.1

隨之而來的是帶有EJB 3.1的 Java EE 6 –攔截器1.1仍包含在EJB規范文檔中:

  • @InterceptorBinding –一種指定類或方法的攔截器的類型安全方法。 請注意,此注釋由CDI 1.0 (Java EE 6中引入的另一個規范)所利用,并且其詳細信息位于CDI 1.0規范文檔中,而不是EJB 3.1中 (至少對我來說是燈泡時刻)。
  • @Interceptor –用于在特定方法中顯式聲明一個包含攔截邏輯的類(用@AroundInvoke等注釋)作為攔截器以及適當的Interceptor Binding。 僅在CDI 1.0文檔中也提到了這一點。
  • @AroundTimeout –用于攔截EJB計時器的超時以及獲取被攔截的Timer實例的方式(通過javax.interceptor.InvocationContext.getTimer() )

攔截器1.2

攔截器在Java EE 7中被拆分成單獨的規范,因此攔截器1.2應運而生:

  • 攔截器1.2是1.1的維護版本,因此JSR編號仍然與EJB 3.1( JSR 318 )相同。
  • Interceptor.Priority (靜態類)–提供定義攔截器需要被調用的順序(優先級)的能力。
  • @AroundConstruct –用于攔截目標類的構造,即在調用目標類的構造函數之前先調用邏輯

重要的是要記住,攔截器通常適用于托管bean。 托管Bean本身是簡單的POJO,容器已將其授予基本服務–攔截器是其中之一,包括生命周期回調,資源注入。

記憶輔助

將Interceptor視為可以在其整個生命周期中插入到bean的組件是有幫助的:

  • 在它們被構建之前– @AroundConstruct
  • 在它們構建之后– @PostConstruct
  • 在他們的生命中(方法調用)– @AroundInvoke
  • 銷毀之前– @PreDestroy
  • EJB超時– @AroundTimeout

讓我們更詳細地了解攔截器的一些特征,并嘗試回答以下問題:

  • 它們在哪里應用,它們攔截了什么?
  • 如何將攔截器綁定到應該攔截的目標(類)?

攔截器類型(基于攔截的組件)

方法攔截器

  • @AroundInvoke實現
  • 包含邏輯的方法可以是單獨的類的一部分,也可以是目標類(要攔截的類)本身的一部分。

生命周期回調攔截器

  • @AroundConstruct裝飾方法,以攔截類的構造函數調用
  • 用@AroundConstruct注釋的方法不能是所攔截類的一部分。 必須使用單獨的Interceptor類進行定義
  • 在方法上使用@PostConstruct批注,以攔截托管bean上的回調方法。 再次說明一下-攔截器規范并未這樣定義新的注釋。 需要在攔截器方法上重用@PostConstruct( 公共注釋規范的一部分 )。
  • @PreDestroy (在Common Annotations規范中定義的另一個回調注解)注解以類似的方式使用

超時攔截器

  • 如上所述- @AroundTimeout用于攔截EJB計時器的超時以及獲取被攔截的Timer實例的方式(通過javax.interceptor.InvocationContext.getTimer() )

應用/綁定攔截器

使用@Interceptors

  • 如以上示例所示,只需使用@Interceptors批注指定攔截器類
  • @Interceptor可以在類級別上應用(自動適用于類的所有方法),在使用@AroundConstruct的特定于構造函數的攔截器的情況下,可以應用于特定方法或多個方法和構造函數

使用@IntercerptorBinding

  • 攔截器綁定(如上所述)–使用@IntercerptorBinding批注定義一個綁定批注,該批注在偵聽器類和目標類中將進一步使用(需要攔截其方法,構造函數等)

部署描述符

人們還可以使用部署描述符以明確的方式以及以覆蓋模式將注釋器和目標類綁定到注釋。

這是Java EE攔截器的快速概述。 希望您找到更深層次的正確觸發!

翻譯自: https://www.javacodegeeks.com/2015/01/java-ee-interceptors.html

總結

以上是生活随笔為你收集整理的Java EE拦截器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。