展厅设计公司网站,电子商务网站运营 需要确立,se 网站优化,成品网站管理系统java ee cdi这是CDI Disposer方法的教程。 在CDI中#xff0c;由于Producer方法生成的对象随后可以注入到应用程序中#xff0c;因此使用Disposer方法#xff0c;以便在其工作完成时将其删除。 Disposer方法始终与Producer方法匹配。 Disposer方法使用的一个示例是当应用程… java ee cdi 这是CDI Disposer方法的教程。 在CDI中由于Producer方法生成的对象随后可以注入到应用程序中因此使用Disposer方法以便在其工作完成时将其删除。 Disposer方法始终与Producer方法匹配。 Disposer方法使用的一个示例是当应用程序使用与数据库的连接时。 由于必须在与数据库的接口完成后关闭连接因此使用Disposer方法删除表示连接的对象。 在这里我们将向您展示如何使用Disposer方法。 我们将创建一个简单的服务。 然后一旦结束我们将创建一个Producer方法以在应用程序中生成和注入服务并创建一个Disposer方法以清理该服务。 我们首选的开发环境是Eclipse 。 我们正在使用Eclipse Juno4.2版本以及Maven Integration插件版本3.1.0。 您可以从Eclipse的这里从和Maven Eclipse插件这里 。 用于Eclipse的Maven插件的安装不在本教程的讨论范围之内因此不再讨论。 Tomcat 7是使用的应用程序服务器。 让我们开始 1.创建一个新的Maven项目 转到文件-项目- Maven- Maven项目。 在向导的“选择项目名称和位置”页面中确保未选中 “创建简单项目跳过原型选择”选项单击“下一步”以继续使用默认值。 在这里必须添加用于创建Web应用程序的Maven原型。 单击“添加原型”并添加原型。 将“ Archetype组ID”变量设置为org.apache.maven.archetypes 将“ Archetype构件ID”变量设置为maven-archetype-webapp 将“ Archetype版本”设置为1.0 。 点击“确定”继续。 在向导的“输入工件ID”页面中您可以定义项目的名称和主程序包。 将“组ID”变量设置为com.javacodegeeks.snippets.enterprise 将“工件ID”变量设置为cdibeans 。 上述选择组成主体工程包作为com.javacodegeeks.snippets.enterprise.cdibeans和项目名称为cdibeans 。 将“ Package”变量设置为war 以便创建一个war文件以部署到tomcat服务器。 点击“完成”退出向导并创建您的项目。 Maven项目结构如下所示 它由以下文件夹组成 / src / main / java文件夹其中包含应用程序动态内容的源文件 / src / test / java文件夹包含用于单元测试的所有源文件 / src / main / resources文件夹包含配置文件 / target文件夹包含已编译和打包的可交付成果 / src / main / resources / webapp / WEB-INF文件夹包含Web应用程序的部署描述符 pom.xml是项目对象模型POM文件。 包含所有项目相关配置的单个文件。 2.添加所有必要的依赖项 通过在POM编辑器的“ Pom.xml”页面上对其进行编辑可以在Maven的pom.xml文件中添加依赖项如下所示 pom.xml project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.javacodegeeks.snippets.enterprise.cdi/groupIdartifactIdcdibeans/artifactIdpackagingwar/packagingversion0.0.1-SNAPSHOT/versionnamecdibeans Maven Webapp/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdorg.jboss.weld.servlet/groupIdartifactIdweld-servlet/artifactIdversion1.1.10.Final/version/dependencydependencygroupIdjavax.servlet/groupIdartifactIdjstl/artifactIdversion1.2/version/dependencydependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.0.1/versionscopeprovided/scope/dependencydependencygroupIdorg.glassfish/groupIdartifactIdjavax.faces/artifactIdversion2.1.7/version/dependency/dependenciesbuildfinalNamecdibeans/finalName/build
/project 如您所见Maven以声明方式管理库依赖关系。 创建本地存储库默认情况下位于{user_home} /。m2文件夹下所有必需的库都从公共存储库下载并放置在该库中。 此外库内的依赖关系会自动解决和处理。 3.创建一个简单的服务 GreetingCard.java类是具有两个方法的接口。 GreetingCard.java package com.javacodegeeks.snippets.enterprise.cdibeans;public interface GreetingCard {public void sayHello();public void sayGoodBye();
} 该服务的实现如下所示 GreetingCardImpl.java package com.javacodegeeks.snippets.enterprise.cdibeans.impl;import com.javacodegeeks.snippets.enterprise.cdibeans.GreetingCard;public class GreetingCardImpl implements GreetingCard {public void sayHello() {System.out.println(Hello!!!);}public void sayGoodBye() {System.out.println(GoodBye!!!);}
}4.在托管Bean中使用生产者和处置者 在下面的托管bean中我们利用了上面创建的Producer和Disposer方法。 特别是在GreetingCardFactory.java类中我们创建了一个方法方法getGreetingCard() 该方法使用Produces注释进行注释。 该方法创建GreetingCardImpl的实例。 以相同的方式该Disposer方法具有一个带注释Disposes参数。 Disposer参数接收由生产者方法产生的对象。 当上下文结束时将自动调用Disposer方法。 在这里由于我们已经创建了RequestScoped Producer方法因此在请求结束时将调用Disposer方法。 GreetingCardFactory.java package com.javacodegeeks.snippets.enterprise.cdibeans;import java.io.Serializable;import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;import com.javacodegeeks.snippets.enterprise.cdibeans.impl.GreetingCardImpl;public class GreetingCardFactory implements Serializable {private static final long serialVersionUID -44416514616012281L;ProducesRequestScopedGreetingspublic GreetingCard getGreetingCard() {GreetingCard greetingCard new GreetingCardImpl();greetingCard.sayHello();return greetingCard;}public void disposeGreetingCard(Disposes Greetings GreetingCard greetingCard) {greetingCard.sayGoodBye();}} 我们可以使用限定符来提供特定bean类型的各种实现。 限定词是我们应用于Bean的注释。 限定符类型是Java批注定义为Target({METHOD, FIELD, PARAMETER, TYPE})和Retention(RUNTIME) 。 在这里我们声明一个Greetings限定词如下所示 Greetings.java package com.javacodegeeks.snippets.enterprise.cdibeans;import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;import javax.inject.Qualifier;Qualifier
Retention(RUNTIME)
Target({ FIELD, TYPE, METHOD, PARAMETER })
public interface Greetings {}5.运行应用程序 为了运行该应用程序我们创建了一个简单的servlet如下所示 GreetingServlet.java package com.javacodegeeks.snippets.enterprise.cdibeans.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.javacodegeeks.snippets.enterprise.cdibeans.GreetingCard;
import com.javacodegeeks.snippets.enterprise.cdibeans.Greetings;WebServlet(name greetingServlet, urlPatterns {/sayHello})
public class GreetingServlet extends HttpServlet {private static final long serialVersionUID 2280890757609124481L;InjectGreetingsprivate GreetingCard greetingCard;public void init() throws ServletException {}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType(text/html);PrintWriter out response.getWriter();out.println(h1 Hello ... /h1);System.out.println( .... greetingCard.toString());}public void destroy(){}} 要运行该示例我们必须使用Maven构建项目然后将产生的war文件放置在tomcat的webbaps文件夹中。 然后我们可以继续 http://localhost/8080/cdibeans/sayHello 结果是如下所示 这是Java EE CDI Disposer方法的教程。 下载本教程的源代码 CDIDisposerMethodExample 翻译自: https://www.javacodegeeks.com/2013/05/java-ee-cdi-disposer-methods-example.htmljava ee cdi