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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java EE CDI处理程序方法示例

發(fā)布時(shí)間:2023/12/3 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java EE CDI处理程序方法示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是CDI Disposer方法的教程。 在CDI中,由于Producer方法生成的對(duì)象隨后可以注入到應(yīng)用程序中,因此使用Disposer方法,以便在其工作完成時(shí)將其刪除。 Disposer方法始終與Producer方法匹配。

Disposer方法的使用示例是應(yīng)用程序使用與數(shù)據(jù)庫(kù)的連接時(shí)。 由于必須在與數(shù)據(jù)庫(kù)的接口完成后關(guān)閉連接,因此使用Disposer方法刪除表示連接的對(duì)象。

在這里,我們將向您展示如何利用Disposer方法。 我們將創(chuàng)建一個(gè)簡(jiǎn)單的服務(wù)。 然后,一旦結(jié)束,我們將創(chuàng)建一個(gè)Producer方法以在應(yīng)用程序中生成和注入服務(wù),并創(chuàng)建Disposer方法以清理該服務(wù)。

我們首選的開發(fā)環(huán)境是Eclipse 。 我們正在使用Eclipse Juno(4.2)版本以及Maven Integration插件版本3.1.0。 您可以從Eclipse的這里從和Maven Eclipse插件這里 。 用于Eclipse的Maven插件的安裝不在本教程的討論范圍內(nèi),因此將不予討論。 Tomcat 7是使用的應(yīng)用程序服務(wù)器。

讓我們開始,

1.創(chuàng)建一個(gè)新的Maven項(xiàng)目

轉(zhuǎn)到文件->項(xiàng)目-> Maven-> Maven項(xiàng)目。

在向?qū)У摹斑x擇項(xiàng)目名稱和位置”頁面中,確保未選中 “創(chuàng)建簡(jiǎn)單項(xiàng)目(跳過原型選擇)”選項(xiàng),單擊“下一步”以繼續(xù)使用默認(rèn)值。

在這里,必須添加用于創(chuàng)建Web應(yīng)用程序的Maven原型。 單擊“添加原型”并添加原型。 將“ Archetype組ID”變量設(shè)置為"org.apache.maven.archetypes" ,將“ Archetype構(gòu)件ID”變量設(shè)置為"maven-archetype-webapp" ,將“ Archetype版本”設(shè)置為"1.0" 。 點(diǎn)擊“確定”繼續(xù)。

在向?qū)У摹拜斎牍ぜ蘒D”頁面中,您可以定義項(xiàng)目的名稱和主程序包。 將“ Group Id”變量設(shè)置為"com.javacodegeeks.snippets.enterprise" ,將“ Artifact Id”變量設(shè)置為"cdibeans" 。 上述選擇組成主體工程包作為"com.javacodegeeks.snippets.enterprise.cdibeans"和項(xiàng)目名稱為"cdibeans" 。 將“ Package”變量設(shè)置為"war" ,以便創(chuàng)建一個(gè)war文件以部署到tomcat服務(wù)器。 點(diǎn)擊“完成”退出向?qū)Р?chuàng)建您的項(xiàng)目。

Maven項(xiàng)目結(jié)構(gòu)如下所示:

  • 它包含以下文件夾:
  • / src / main / java文件夾,其中包含應(yīng)用程序動(dòng)態(tài)內(nèi)容的源文件,
  • / src / test / java文件夾包含用于單元測(cè)試的所有源文件,
  • / src / main / resources文件夾包含配置文件,
  • / target文件夾包含已編譯和打包的可交付成果,
  • / src / main / resources / webapp / WEB-INF文件夾包含Web應(yīng)用程序的部署描述符,
  • pom.xml是項(xiàng)目對(duì)象模型(POM)文件。 包含所有項(xiàng)目相關(guān)配置的單個(gè)文件。

2.添加所有必要的依賴項(xiàng)

您可以通過在POM編輯器的“ Pom.xml”頁面上對(duì)其進(jìn)行編輯,來在Maven的pom.xml文件中添加依賴項(xiàng),如下所示:
pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.javacodegeeks.snippets.enterprise.cdi</groupId><artifactId>cdibeans</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>cdibeans Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>org.jboss.weld.servlet</groupId><artifactId>weld-servlet</artifactId><version>1.1.10.Final</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>org.glassfish</groupId><artifactId>javax.faces</artifactId><version>2.1.7</version></dependency></dependencies><build><finalName>cdibeans</finalName></build> </project>

如您所見,Maven以聲明方式管理庫(kù)依賴關(guān)系。 創(chuàng)建本地存儲(chǔ)庫(kù)(默認(rèn)情況下,位于{user_home} /。m2文件夾下),所有必需的庫(kù)都從公共存儲(chǔ)庫(kù)下載并放置在該庫(kù)中。 此外,庫(kù)內(nèi)的依賴關(guān)系會(huì)自動(dòng)解決和處理。

3.創(chuàng)建一個(gè)簡(jiǎn)單的服務(wù)

GreetingCard.java類是帶有兩個(gè)方法的接口。

GreetingCard.java

package com.javacodegeeks.snippets.enterprise.cdibeans;public interface GreetingCard {public void sayHello();public void sayGoodBye(); }

該服務(wù)的實(shí)現(xiàn)如下所示:

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中使用生產(chǎn)者和處置者

在下面的托管bean中,我們利用了上面創(chuàng)建的Producer和Disposer方法。 特別是,在GreetingCardFactory.java類中,我們創(chuàng)建了一個(gè)方法getGreetingCard() ,該方法帶有@Produces批注。 該方法創(chuàng)建GreetingCardImpl的實(shí)例。 以相同的方式,該Disposer方法具有一個(gè)帶注釋@Disposes參數(shù)。 Disposer參數(shù)接收通過生產(chǎn)者方法產(chǎn)生的對(duì)象。 當(dāng)上下文結(jié)束時(shí),將自動(dòng)調(diào)用Disposer方法。 在這里,由于我們已經(jīng)創(chuàng)建了RequestScoped Producer方法,因此在請(qǐng)求結(jié)束時(shí)將調(diào)用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;@Produces@RequestScoped@Greetingspublic GreetingCard getGreetingCard() {GreetingCard greetingCard = new GreetingCardImpl();greetingCard.sayHello();return greetingCard;}public void disposeGreetingCard(@Disposes @Greetings GreetingCard greetingCard) {greetingCard.sayGoodBye();}}

我們可以使用限定符來提供特定bean類型的各種實(shí)現(xiàn)。 限定詞是我們應(yīng)用于Bean的注釋。 限定符類型是Java批注,定義為@Target({METHOD, FIELD, PARAMETER, TYPE})和@Retention(RUNTIME) 。

在這里,我們聲明一個(gè)@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.運(yùn)行應(yīng)用程序

為了運(yùn)行該應(yīng)用程序,我們創(chuàng)建了一個(gè)簡(jiǎn)單的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;@Inject@Greetingsprivate 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(){}}

要運(yùn)行該示例,我們必須使用Maven構(gòu)建項(xiàng)目,然后將生成的war文件放置在tomcat的webbaps文件夾中。 然后,我們可以繼續(xù):

http://localhost/8080/cdibeans/sayHello

結(jié)果是如下所示:


這是Java EE CDI Disposer方法的教程。 下載本教程的源代碼: CDIDisposerMethodExample

翻譯自: https://www.javacodegeeks.com/2013/05/java-ee-cdi-disposer-methods-example.html

總結(jié)

以上是生活随笔為你收集整理的Java EE CDI处理程序方法示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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