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 的用戶端渲染檢視技術的經驗,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 個不同的國家/地區向 1000 多名學生教授了 Spring。他曾在眾多會議上發表關於 Spring 的演講,並且是 SpringSource 部落格的活躍技術部落客。Michael 擔任 SpringSource 亞太地區的教育經理…

Spring Petclinic 已在 Github 上!

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

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

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

這是新架構的概觀

Spring, Spring, Spring

我們使用了以下 Spring 功能

  • 使用註解進行依賴注入
  • 使用 jdbc (JdbcTemplate)、JPA 或 Spring Data JPA(儲存庫層)進行資料存取整合。您可以透過在 web.xml 或其中一個 JUnit 測試中設定相應的 Bean 配置文件來選擇要使用的實作。
  • 使用 @Transactional 的交易(服務層)
  • 使用 @Cacheable 與 ehcache 作為快取實作的快取(服務層)
  • 面向切面編程(監控每個儲存庫方法被呼叫的次數)
  • Spring MVC:使用 Bean 驗證 (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 撰寫了關於該主題的五篇部落格文章的精彩系列。

它回答了以下問題:- 我應該依賴會話上下文嗎?(第 2 部分) - 我應該使用哪個 Apache Tomcat 連接器?(第 2 部分) - 我應該使用哪個資料庫連線池?(第 3 部分) - JDBC 比 JPA 或 Spring Data JPA 更快嗎?(第 4 部分) - 使用 OpenSessionInViewFilter 的優點是什麼?(第 4 部分

 

參考文獻

GitHub 上的 Spring Petclinic Cloud Foundry 上的 Spring Petclinic 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 中的 Proxy 用法

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

在 Spring 框架中,許多技術特性都依賴於 Proxy 的使用。我們將使用三個範例深入探討這個主題:交易快取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 物件不應該...