vue.jsr入门_JSR 365更新:深入CDI 2.0
vue.jsr入門
上下文和依賴注入2.0( JSR 365 )是CDI 1.2的更新,CDI 1.2目前是Java EE 7平臺的一部分。 目前處于公開審查階段 。 對于不熟悉CDI的那些人,它定義了一組功能強大的免費服務,這些服務可充當凝膠,幫助改善應用程序代碼的協調性和結構。 有關更多詳細信息,請訪問規格頁面 。
CDI 2.0也將上下文和依賴注入服務的可用性擴展到Java SE,因為它現在將同時面向Java SE和Java EE平臺。 CDI規范分為三部分, 第一部分-核心CDI , 第二部分-Java SE中的 CDI , 第三 部分-Java EE中的CDI 。 CDI 2.0的主要更改如下:
- 與Java SE 8更好地結合
- 用于在Java SE應用程序中引導CDI的API
- 提供觀察者訂購的能力
- 能夠觸發異步事件
- 服務提供商接口(SPI)元素的新配置器接口
- 能夠在ProcessObserverEvent事件中配置或否決觀察者方法
- 支持特定注釋類型的內聯實例化
- 增加了InterceptionFactory接口,該接口允許創建一個包裝實例,該包裝實例的方法調用被方法攔截器攔截并轉發到提供的實例。
我鼓勵您查看CDI 2.0公共審查草案,以詳細了解列出的每個增強功能的詳細信息以及新功能的完整列表。 通讀草案并向專家組提供反饋。 有關提供反饋的所有相關詳細信息,請參見JSR 365頁面 。 要開始測試,請在您喜歡的IDE中創建一個新的基于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之前,只能以同步方式觸發事件。 在用于異步處理的最新迭代中對它們進行了增強。 運作方式如下:
創建某種類型的事件。 接下來,以異步方式觸發事件,并在事件完成后相應地進行處理。 在此示例中,我創建了MovieEvent類,只要Movie對象發生持久事件,該類都將使用該類。 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;}}在以下情況下,當新的電影持續存在時,我們將觸發一個事件。 以下代碼位于示例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"));}} . . .觸發事件時,它將創建一個新的MovieEvent對象,如果成功完成,則將顯示一條消息以指示成功。 在此示例中,流用于處理“ whenComplete”動作。
隨意克隆位于https://github.com/juneau001/CdiTest的存儲庫,并進行CDI 2.0測試。 此示例只是CDI 2.0的一個簡單測試。 您可以克隆并利用此測試項目作為與規范其他方面一起工作的起點。 請密切注意目前處于“公開審核”投票階段的JSR 365。
翻譯自: https://www.javacodegeeks.com/2017/03/jsr-365-update-digging-cdi-2-0.html
vue.jsr入門
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的vue.jsr入门_JSR 365更新:深入CDI 2.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何查商品房现售备案证号(如何查商品房现
- 下一篇: linux创建文件夹命令(linux 创