版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、JAVA EE 6,最佳實踐: 從 Spring 遷移到,WTF ?!?,Bert Ertman荷蘭 Luminis 公司研究員荷蘭 Java 用戶組的負責人,同時還是一位 Java Champion,這是說給誰聽的?,您正在使用老版本的 Spring,卻不知怎樣向前發(fā)展Java EE 好像又火起來了,您應當趕上這樣的趨勢嗎?您喜歡《J2EE Design and Development》這本書,但它仍沒有過時嗎?,為什么要傾
2、聽我們的意見?,我們不為任何一家應用服務器供應商 工作我們也不是 Rod Johnson 的追隨者我們廣泛使用 J2EE、Spring 和新的 Java EE 技術針對 Java EE 和 Spring 展開過無數(shù)次討論……,為什么要遷移?,Spring 是一項專有技術無論如何,從舊版的 Spring 升級需要大量的工作那,為什么不直接遷移到標準上來呢?,場景 A,Scenario A,但現(xiàn)在我們需要這樣的,首先讓我們澄清幾
3、個誤解……,Java EE 是否過于龐大了?,部署了應用后的平臺啟動時間JBoss AS 7 約 2 秒Glassfish V3 約 4 秒Tomcat 6 + Spring 約 4 秒Java EE 6 WAR 文件 < 100kb,但是我需要依賴注入,Java EE 6 引入 CDI 更強大的上下文 DI 模型讓平臺能夠以標準方式擴展,但是我需要 AOP!,是嗎?難道您想讓你的代碼變得雜亂并難以理解嗎?或者,您
4、僅僅是使用了輕量級的 AOP, 即 Spring AOP 或 Java EE 規(guī)范中的攔截器?,我是否需要重型工具?,功能比較,* 不是 Java EE 規(guī)范的一部分,這一切均可使用普通輕量級 Java EE 完成,rm -Rf spring*,?,當然,這將十分有趣!實際情況呢?,當然,這將十分有趣!實際情況呢?,典型的老版本 Spring 應用,大量復雜的 XML 配置文件,無法使用注解舊式/過時的 ORM 解決方案
5、(JDBC 模板、Kodo、Toplink 等)過時的基于 Web MVC 的擴展 (SimpleFormController 等),遷移路徑,升級 Spring 版本替換 Spring 內(nèi)的舊框架(ORM、Web 框架)Spring 和 Java EE 容器并存完全替換 Spring移除 Spring 容器,遷移路徑,升級 Spring 版本替換 Spring 內(nèi)的舊框架(ORM、Web 框架) Spring 和
6、Java EE 容器并存完全替換 Spring移除 Spring 容器,升級 Spring 版本,升級 Spring 運行時(替換 JAR 文件)無代碼/配置變更,遷移路徑,升級 Spring 版本 替換 Spring 內(nèi)的舊框架(ORM、Web 框架) Spring和Java EE容器并存完全替換 Spring移除 Spring 容器,替換 Spring 內(nèi)的舊框架,表示層,數(shù)據(jù)/集成層,Web MVC,任務,Sprin
7、g JDBC 模板,Kodo,@AutoWired,業(yè)務層,JMS bean,@AutoWired,@AutoWired,JPA,JSF,尚未觸碰特定于 Spring 的 API,Spring bean,遷移路徑,升級 Spring 版本 替換 Spring 內(nèi)的舊框架(ORM、Web 框架)Spring 和Java EE 容器并存完全替換 Spring移除 Spring 容器,,,myapp.war,,Spring 容器,Se
8、rvlet 容器,Spring 應用程序,Spring bean,Spring bean,TX 管理器,AOP,ORM,,Java EE 6 應用服務器,,CDI / EJB 容器,,myapp.war,CDI bean,會話 bean,TX 管理器,安全性,攔截器,JPA,Java EE 應用程序,,Java EE 6 應用服務器,,CDI / EJB 容器,,myapp.war,CDI bean,會話 bean,TX 管理器,安全性
9、,攔截器,JPA,混合在一起,,在 Java EE 容器內(nèi)運行 Spring,表示層,數(shù)據(jù)/集成層,Spring bean,任務,Spring JDBC 模板,業(yè)務層,JMS bean,@AutoWired,@AutoWired,JPA,JSF,Spring 和Java EE 容器并存,表示層,數(shù)據(jù)/集成層,Spring bean,任務,Spring JDBC 模板,業(yè)務層,JMS bean,@AutoWired,@AutoWire
10、d,JPA,EJB,CDI,@Inject,@Inject,Spring DAO,Spring 配置,JSF / CDI bean,在此,我們不想了解 Spring,用 CDI 封裝 Spring,編寫 CDI 擴展引導 Spring 容器在 Spring 容器中查找 Spring Bean 并在 CDI 上下文中發(fā)布,CDI 擴展示例,遷移路徑,升級 Spring 版本 替換 Spring 內(nèi)的舊框架(ORM、Web 框架)S
11、pring 和 Java EE 容器并存完全替換 Spring移除 Spring 容器,完全替換 Spring,表示層,數(shù)據(jù)/集成層,Spring bean,任務,Spring JDBC 模板,業(yè)務層,JMS bean,@AutoWired,@AutoWired,JPA,JSF,EJB,CDI,@Inject,@Inject,完全替換 Spring,表示層,數(shù)據(jù)/集成層,EJB 計時器,業(yè)務層,MDB,@AutoWired,@A
12、utoWired,JPA,JSF,EJB,CDI,@Inject,@Inject,Spring JDBC 模板,TX 層,將 Spring TX 和 DAO 遷移到 EJBTX 管理器在應用服務器內(nèi)默認情況下,EJB 是事務性的EJB 集成了 JPA,您是說 EJB 很好嗎?,一點沒錯!EJB 只是容器管理的 POJO與 Spring bean 一樣,而且不需要容器配置……,DAO,Spring,DAO 配置,Java EE
13、替代方案,EJB,處理惰性加載,許多 Spring 應用程序使用 Open-EntityManager-In-View 模式EJB 具有擴展的持久性上下文更明確、更強大,LazyInitializationException 異常,修復惰性加載問題,只要 bean 存在就保持 EntityManager 可用,沉迷于模板?,如果使用了 JDBC 模板將會怎樣?讓我們開始是否使用 ORM 的老生常談第 1 階段:拒絕第 2 階段
14、:最終將會完成遷移 ;-),使用 Java EE 內(nèi)的 JDBC 模板,可用簡單的生成器方法注入可能是因為它沒有依賴 Spring 容器盡管有一些額外的依賴項,模板生成器示例,遷移路徑,升級 Spring 版本 替換 Spring 內(nèi)的舊框架(ORM、Web 框架)Spring 和Java EE 容器并存完全替換 Spring移除 Spring 容器,移除依賴項,類路徑只需要包含 API 所需的類,并不需要包含框架類使得從
15、大約 40 個依賴性減少到 1 個,測試方面如何?,Spring 在測試方面一直很出色DI 讓單元測試可行Spring 測試框架讓 Spring 容器內(nèi)測試可行靈活配置能滿足多環(huán)境下測試的需要,如何進行測試?,Arquillian,使用 API 創(chuàng)建微部署部署到真正應用服務器在服務器中運行測試,Arquillian 示例,這一切都值得嗎?,Spring 之后還有后來者嗎?,我們相信,創(chuàng)新空間總是存在的最好是通過開源實現(xiàn)并
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GSM用戶卡遷移到TD-SCDMA網(wǎng)絡中的研究.pdf
- sybase數(shù)據(jù)庫遷移到oracle11g手冊
- vsan最佳實踐
- JavaEE多層架構(gòu)Struts2+Spring3+Hibernate3+Ajax的整合.pdf
- Blue Hawk系統(tǒng)遷移到Windows平臺的關鍵技術研究與實現(xiàn).pdf
- 數(shù)據(jù)挖掘算法介紹-huihoo
- 軟件先進技術-huihoo
- 怎么把桌面移到d盤 把桌面轉(zhuǎn)移到d盤
- 降低發(fā)電煤耗最佳實踐
- 系統(tǒng)架構(gòu)優(yōu)化最佳實踐
- 綜合統(tǒng)計管理最佳實踐
- okr最佳實踐案例--linkedin
- okr最佳實踐案例--motorola
- 知識管理最佳實踐(20190214021447)
- okr最佳實踐案例--google
- 采購環(huán)節(jié)內(nèi)控最佳實踐
- 戰(zhàn)略績效管理最佳實踐
- 血培養(yǎng)的最佳實踐
- 華為的最佳采購實踐
- okr最佳實踐案例--uber
評論
0/150
提交評論