程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 利用CDI和JPA開發Servlet應用

利用CDI和JPA開發Servlet應用

編輯:關於JSP

開始之前

關於 CDI

JSR-299 規范原來叫做 Web Beans,其主要目的是為了整合 JSF 和 EJB 。到 2009 年正式發布該規范時,JSR-299 已經改稱 “Contexts and Dependency Injection for the Java EE platform”(簡稱 CDI ),整合 JSF 和 EJB 仍是其目的,但這並非 CDI 的唯一功能。

通讀 JSR-299 規范的文本,描述最多的是依賴注入(Dependency Injection, DI ) 容器。CDI 的 DI 有與眾不同 之處,它的第一個字母 C,代表 Contexts,是上下文環境,也是范圍。CDI 注入的對象必須與某個 Context 關聯,其生命周期與 Web 應用的各個范圍息息相關。

本教程適合的讀者對象

閱讀本教程的讀 者需具備以下基礎:

熟悉 Servlet 開發。示例的應用邏輯比較簡單,有了 Servlet 編程基礎就能看 懂。

熟悉 JPA 開發。需要對 Persistence Context 和 Entity Manager 有一定了解。

熟悉 Maven 工 具。本教程的示例應用配置了 pom.xml,對初次接觸 Maven 的讀者,第一次更新依賴庫時可能會有較多的問 題,需要了解 Maven 的基本操作才能解決。

了解 Spring IoC。教程中經常會比較 CDI 和 Spring IoC, 不熟悉 Spring IoC 的讀者可略過這些內容。

本教程的內容選擇

本教程探討了在 Servlet 環 境中使用 CDI,沒有用到 JSF 和 EJB。這麼做主要是出於下面的考慮:

JSF 對 Servlet 封裝得很深 ,在處理各個范圍時不如 Servlet 來得直觀。

Servlet 是每個 Java Web 開發者必備的知識技能,熟悉 JSF 的開發者相對較少。

Servlet 環境中使用 CDI 復雜度較低,結合了 JPA 後,也能實現 JSF + EJB 組 合的許多重要特性。

起草中的 JSR-346,即 CDI 1.1 規范,增強了對 Servlet 的支持力度。

本教 程的內容組織

本教程基本遵照項目驅動的方式來組織知識點,所用的示例應用實現了雇員信息的查看 和修改。涉及的 CDI 功能包括:

CDI 作為依賴注入容器的特點和用法。

用 CDI 實現聲明式事務管 理。

用 CDI 實現在 Session 范圍裡共享 Persistence Context。

監聽 CDI 容器的事件。

開發 環境配置

下面列出示例應用所用開發環境及工具軟件的版本:

Tomcat,版本 7.0.28。

Eclipse Java EE IDE for Web Developers,版本 Indigo SR2。

Maven,版本 3.0.4。

Maven 配置

示例應用用到了 Weld 和 Hibernate,使用 Maven 來管理項目,需要添加 JBoss Public 倉庫和 相關依賴項,pom.xml 中相關配置代碼如清單 1 所示。

清單 1. pom.xml 配置代碼片斷

<repositories> 
    <repository> 
        <id>jboss-public-repository-group</id> 
        <name>JBoss Public Repository Group</name> 
        <url>http://repository.jboss.org/nexus/content/groups/public/</url> 
        <layout>default</layout> 
       …
    </repository> 
</repositories> 
<dependencies> 
    <dependency> 
        <groupId>org.jboss.weld.servlet</groupId> 
        <artifactId>weld-servlet-core</artifactId> 
        <version>1.1.8.Final</version> 
    </dependency> 
    <dependency> 
        <groupId>org.jboss.weld</groupId> 
        <artifactId>weld-core</artifactId> 
        <version>1.1.8.Final</version> 
    </dependency> 
    <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-entitymanager</artifactId> 
        <version>4.1.4.Final</version> 
    </dependency> 
   …
</dependencies>

初次下載工程以後,可到工程目錄下執行:mvn dependency:resolve,讓 maven 下載相關依賴包。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved