影视类网站建设,近期的重大新闻,企业网站建设admin,个人工作室网站源码带后台vue.jsr入门上下文和依赖注入2.0#xff08; JSR 365 #xff09;是CDI 1.2的更新#xff0c;CDI 1.2目前是Java EE 7平台的一部分。 目前处于公开审查阶段 。 对于不熟悉CDI的那些人#xff0c;它定义了一组功能强大的免费服务#xff0c;这些服务可充当凝胶#xff0c;… 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应用程序并添加以下依赖项 dependencygroupidjavax.enterprise/groupidartifactidcdi-api/artifactidversion2.0-PFD/version/dependencydependencygroupidorg.jboss.weld/groupidartifactidweld-core-bom/artifactidversion3.0.0.Alpha14/versiontypepom/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;InjectEventMovieEvent 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.htmlvue.jsr入门