Michael Isvy

Michael Isvy

校友/前作者
部落格文章(按作者)Michael Isvy

將 Spring Web MVC 應用程式從 JSP 遷移到 AngularJS

工程 | 2015年8月19日 | ...

作者附註

本文是客座文章,由 Han LimTony Nguyen 撰寫。Han 和 Tony 在新加坡 Spring 使用者組上就 Spring + Angular JS 做了精彩的演講。這篇部落格就是基於他們的演講內容。

摘要

在本文中,我們將介紹我們從 JSP、Struts 和 Velocity 等伺服器端渲染檢視技術遷移到使用 AngularJS(一個流行的現代瀏覽器 JavaScript 框架)進行客戶端渲染檢視技術的經驗。我們將討論進行此更改時需要注意的一些事項以及可能遇到的潛在陷阱。如果…

新加坡 Spring - Hadoop 免費大會

新聞 | 2013年8月22日 | ...

我們很高興地宣佈,將於8月30日星期五晚上6點至8點在新加坡市中心舉辦一場關於 Spring 和 Hadoop 的免費大會。

Spring 最佳實踐:從 Spring Petclinic 到 Spring Data Hadoop

Michael Isvy 於2008年加入 SpringSource(Spring 背後的公司,現為 Pivotal 的一部分)。從那時起,他已在10個不同的國家教授 Spring 課程給超過1000名學生。他曾在眾多會議上就 Spring 發表演講,並且是 SpringSource 部落格上的活躍技術博主。Michael 在 SpringSource 擔任亞太區教育經理一職…

Spring Petclinic 在 Github 上線了!

工程 | 2013年3月21日 | ...

我們很高興地宣佈,Spring Petclinic 示例應用程式已重構。

原始碼現已 在 github 上可用。這是新應用程式的截圖:

這是新架構的概覽

Spring,Spring,Spring

我們使用了以下 Spring 特性

  • 使用註解進行依賴注入
  • 使用 jdbc (JdbcTemplate)、JPA 或 Spring Data JPA (repository layer) 進行資料訪問整合。您可以透過在 web.xml 或 JUnit 測試中設定相應的 bean profile 來選擇使用哪種實現。
  • 使用 @Transactional 進行事務管理 (service layer)
  • 使用 @Cacheable 和 ehcache 作為快取實現進行快取 (service layer)
  • 面向切面程式設計(用於監控每個 Repository 方法被呼叫的次數)
  • Spring MVC:使用 Bean Validation (JSR-303) 進行表單驗證
  • Spring MVC:使用 ContentNegotiatingViewResolver 進行內容協商(html、xml 或 atom)
  • Spring MVC:使用 SimpleMappingExceptionResolver 進行異常處理
  • Spring MVC:使用 Spring MVC 測試框架

 

我們充滿活力的社群

我們收到了社群專家(包括多個開源專案的負責人)的大量貢獻。

 

Thymeleaf

如果您還沒聽說過它,Thymeleaf 可以被視為 JSP 的替代品。它將自己定義為一個 XML / XHTML / HTML5 模板引擎。

它基於一些普通的 HTML 檔案,加上一點名稱空間的魔法。

來自 Thymeleaf 專案的 Daniel 和 Soraya 建立了一個使用 Thymeleaf 代替 JSP 的 Spring-Petclinic 分支。他們在這篇部落格文章中記錄了遷移步驟:http://www.thymeleaf.org/petclinic.html

Spring Petclinic 的 Thymeleaf 分支在此處可用:https://github.com/thymeleaf/thymeleafexamples-petclinic

瞭解更多關於 Thymeleaf:http://www.thymeleaf.org

在 Twitter 上關注 Thymeleaf:https://twitter.com/thymeleaf

 

Dandelion

Dandelion 提供了一組標籤庫,您可以與 JSP 或 Thymeleaf 一起使用。

我們在 Spring-Petclinic 中使用了它來處理 DataTables。它基於 jQuery DataTables 和 Bootstrap 生成表格。

您可以這樣做


<datatables:table data="${ownerList}" id="dataTable"  theme="bootstrap2" export="pdf">
 <datatables:column title="Name" property="name" sortable="true" />
 <datatables:column title="Address" property="address" sortable="true" />
</datatables:table>

輸出的 html 表格看起來像這樣

Dandelion 在 Spring Petclinic 的主分支中使用。

Dandelion 專案的 Thibault Duchateau 寫了一篇 不錯的部落格文章,描述了 Spring Petclinic 應用程式的遷移過程

瞭解更多關於 Dandelion:  http://dandelion.github.com/

在 Twitter 上關注他們:https://twitter.com/dandelion_proj

 

Maven 還是 Gradle?

預設情況下,Spring Petclinic 使用 Maven,因為它是 Java 應用程式中最常見的選擇。雖然 Spring Petclinic 與大多數實際應用程式相比相當小,但其 Maven 的 pom.xml 檔案已經相當冗長了。

來自 Thoughtworks China 的 Li Yanhui 非常慷慨地將 Spring Petclinic 遷移到了 Gradle。這是並行比較 Maven 和 Gradle 的絕佳方式。build.gradle 配置檔案確實更容易理解。它目前包含143行(而 Maven POM 包含543行)。

您可以在這裡瀏覽基於 Gradle 的 Spring Petclinic 版本:https://github.com/whimet/spring-petclinic 感謝他們,我們得以在 Spring Petclinic 中發現一些包含程式碼重複和缺少自動化測試的地方。

 

效能測試:讓我們進行擴充套件!

是否有可能將當前的 Spring Petclinic 在單個伺服器例項上擴充套件到每秒處理1000個請求?來自 Ippon Technologies 的 Julien Dubois 就這個主題撰寫了 一系列共五篇精彩的部落格文章。

它回答了諸如以下問題: - 我應該依賴會話上下文嗎?(第二部分) - 我應該使用哪個 Apache Tomcat 聯結器?(第二部分) - 我應該使用哪個資料庫連線池?(第三部分) - JDBC 比 JPA 或 Spring Data JPA 更快嗎?( 第四部分) - 使用 OpenSessionInViewFilter 有什麼好處?( 第四部分)

 

參考資料

Spring Petclinic 在 GitHub Spring Petclinic 在 Cloud Foundry Petclinic + Thymeleaf Petclinic + Gradle

 

Spring MVC:從 JSP 和 Tiles 到 Thymeleaf

工程 | 2012年10月30日 | ...

關於檢視層,Spring @MVC 提供了多種選擇。在本文中,我們將首先討論您在過去幾年中最可能使用過的檢視層方式:JSP。我們將看到使用它們的好壞方法(普通的 JSP、帶有自定義標籤的 JSPApache Tiles)。

然後,我們將討論一個名為 Thymeleaf 的新專案,您可以將其用作 JSP 的替代方法。

像往常一樣,您可以在 github 上的相應應用程式中找到討論的所有程式碼示例。

普通 JSP

讓我們從下面的程式碼示例開始

<html …> <body>
 <div style="padding-top: 50px;">
   <jsp:include page="../menu.jspx"/>
   <c…

將 Spring MVC 與 jQuery 整合以實現驗證規則

工程 | 2012年8月29日 | ...

我很高興看到最近 zeroturnaround 的一項調查顯示 Spring MVC 被評選為 Java 最受歡迎的 Web 框架。

這個框架非常靈活,有幾十種使用方法。與所有具有許多選項的靈活框架一樣,討論常見實踐非常重要。

我為這篇部落格文章建立的專案使用了許多 Spring MVC 應用程式中常見的特性。您會發現類似這樣的內容

在控制器中,您會找到典型的 Spring MVC 特性,用於對映請求、透過註解提取請求資料、資料繫結、檔案上傳…

在…上

事務、快取和 AOP:理解 Spring 中的代理用法

工程 | 2012年5月23日 | ...

在 Spring 框架中,許多技術特性都依賴於代理的使用。我們將深入探討這個主題,透過三個示例:事務快取 Java 配置

本篇部落格文章中展示的所有程式碼示例都可在 我的 github 賬戶上找到。

事務

第一步:無事務

下面的 Service 類尚不具有事務性。讓我們先看一下它原樣,然後再使其具有事務性。

@Service
public class AccountServiceImpl  implements AccountService {
 //…

//Not specifying a transaction policy here!
 public void create(Account account) {
 entityManager.persist(account);
 }
}

由於方法“create”不具有事務性,它很可能會丟擲異常(因為這個 Account 物件不應該…