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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSR 365更新:深入CDI 2.0

發(fā)布時間:2023/12/3 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSR 365更新:深入CDI 2.0 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上下文和依賴注入2.0( JSR 365 )是CDI 1.2的更新,CDI 1.2目前是Java EE 7平臺的一部分。 目前處于公開審查階段 。 對于不熟悉CDI的那些人,它定義了一組功能強大的免費服務,這些服務可充當凝膠,幫助改善應用程序代碼的協(xié)調性和結構。 有關更多詳細信息,請訪問規(guī)格頁面 。

CDI 2.0也將上下文和依賴注入服務的可用性擴展到Java SE,因為它現(xiàn)在將同時面向Java SE和Java EE平臺。 CDI規(guī)范分為三部分, 第一部分-核心CDI , 第二部分-Java SE中的 CDI , 第三 部分-Java EE中的CDI 。 CDI 2.0的主要更改如下:

  • 與Java SE 8更好地結合
  • 用于在Java SE應用程序中引導CDI的API
  • 提供觀察者訂購的能力
  • 能夠觸發(fā)異步事件
  • 服務提供商接口(SPI)元素的新配置器接口
  • 能夠在ProcessObserverEvent事件中配置或否決觀察者方法
  • 支持特定注釋類型的內聯(lián)實例化
  • 增加了InterceptionFactory接口,該接口允許創(chuàng)建一個包裝實例,該包裝實例的方法調用被方法攔截器攔截并轉發(fā)到提供的實例。

我鼓勵您查看CDI 2.0公共審查草案,以詳細了解列出的每個增強功能的詳細信息以及新功能的完整列表。 通讀草案并向專家組提供反饋。 有關提供反饋的所有相關詳細信息,請參見JSR 365頁面 。 要開始測試,請在您喜歡的IDE中創(chuàng)建一個新的基于Maven的Java EE應用程序,并添加以下依賴項:

<dependency><groupid>javax.enterprise</groupid><artifactid>cdi-api</artifactid><version>2.0-PFD</version></dependency><dependency><groupid>org.jboss.weld</groupid><artifactid>weld-core-bom</artifactid><version>3.0.0.Alpha14</version><type>pom</type></dependency>

在本文中,我們將深入探討其中的一項新功能,以幫助您開始使用API??。 讓我們看一下異步事件。 在CDI 2.0之前,只能以同步方式觸發(fā)事件。 在用于異步處理的最新迭代中對它們進行了增強。 運作方式如下:

創(chuàng)建某種類型的事件。 接下來,以異步方式觸發(fā)事件,并在事件完成后進行相應處理。 在此示例中,我創(chuàng)建了MovieEvent類,每當Movie對象發(fā)生持久事件時都將使用該類。 MovieEvent類如下:

public class MovieEvent {private String message;private Movie movie;public MovieEvent(String message, Movie movie){this.message = message;this.movie = movie;}public String getMessage(){return this.message;}public void setMessage(String message){this.message = message;}public Movie getMovie(){return this.movie;}public void setMovie(Movie movie){this.movie = movie;}}

在以下情況下,當新的電影持續(xù)存在時,我們將觸發(fā)一個事件。 以下代碼位于示例JSF應用程序的MovieController CDI bean中:

@Named("movieController") @SessionScoped public class MovieController implements Serializable {@EJBprivate com.mycompany.cditest.session.MovieFacade ejbFacade;private List items = null;private Movie selected;@InjectEvent<MovieEvent> movieEvents; . . .private void persist(PersistAction persistAction, String successMessage) {if (selected != null) {setEmbeddableKeys();try {if (persistAction != PersistAction.DELETE) {getFacade().edit(selected);movieEvents.fireAsync(new MovieEvent("New Movie Released", selected)).whenComplete((event, throwable) -> {if(throwable != null){System.out.println("Error has occurred: " + throwable.getMessage());} else {System.out.println("Successful Movie Processing...");}});} else {getFacade().remove(selected);}JsfUtil.addSuccessMessage(successMessage);} catch (Exception ex) {Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);JsfUtil.addErrorMessage(ex, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));}} . . .

觸發(fā)事件時,它將創(chuàng)建一個新的MovieEvent對象,如果成功完成,則將顯示一條消息以指示成功。 在此示例中,流用于處理“ whenComplete”動作。

隨時克隆位于https://github.com/juneau001/CdiTest的存儲庫,并進行CDI 2.0測試。 此示例只是CDI 2.0的一個簡單測試。 您可以克隆并利用此測試項目作為與規(guī)范其他方面一起工作的起點。 請密切注意目前處于“公開審核”投票階段的JSR 365。

翻譯自: https://www.javacodegeeks.com/2017/03/jsr-365-update-digging-cdi-2-0.html

總結

以上是生活随笔為你收集整理的JSR 365更新:深入CDI 2.0的全部內容,希望文章能夠幫你解決所遇到的問題。

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