我們很高興地宣佈,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