Spring
Spring Framework
2017/3/4
基本概念
Spring Framework是一個基於Java (J2EE)的MVC架構,也就是將一個web application分為模型層(Model)、展示層 (View)、控制層(Controller),通常Model中會有一般的類別或資料庫的存取邏輯,View則是與使用者的互動介面,Controller則是將Model與View串連起來的關鍵角色。
除了是個MVC架構之外,Spring還提供相當多的元件,如:Spring Security、Spring Validation,讓我們在開發web application時能專注在系統的基本邏輯上。
一個最基本的Spring Controller就是一個類別,首先,會定義package以及所需要import的類別,接下來,會利用java的Annotation:「@」來定義這個類別是個Controller。在類別中,指定home這個方法的RequestMapping,也就是指定這個Controller的相對URI,以下面的範例,就是告訴web server,當瀏覽器要求"/" (如:http://localhost:8080/)時,就呼叫home()。另外,home()的回傳值會是執行完這段程式碼之後要執行的view (如: index.html),也就是網頁上會看到index.html的內容。
package com.example;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class SampleController {
@RequestMapping("/")
String home() {
return "index";
}
}
工具與環境需求
可以使用Eclipse,並且下載Spring Tool Suite (STS)的插件(plugin)。Spring原本提供Spring IDE做為Eclipse的插件 (Spring 2.x),後來整合了一些工具,改稱為SpringSource Tool Suite,主要是支援Spring 3.x。後來改稱為Spring Tool Suite,支援Spring 3.x及4.x。也可以直接下載來使用。目前STS最新的版本是3.8.3,是基於Eclipse 4.6.2(Neon) (詳參: https://spring.io/tools/sts/all),所以,基本上跟使用Eclipse沒太大的差別。
建議使用Spring Boot,因為Spring Boot內建Tomcat,所以,不需要下載及安裝Tomcat,如果不使用Spring Boot的話,就要下載Tomcat (7.0 或 8.5)。
Spring 4需要Java 6以上,Spring 3需要Java 5以上。
另外,Spring使用Maven或Gradle來管理所需要的package,也可以利用Ant+Ivy、Maven或Gradle來進行建構。不用下載Maven,因為Eclipse已經內建Maven了。
資料庫的部份,建議使用MySQL (詳參: http://www.codedata.com.tw/database/mysql-tutorial-getting-started/)。
版本
Spring Framwork目前最新的版本是5.0.0但還在測試中,現在公開的最新版本是4.3.6。Spring 4.x需要Java 6以上,Spring 3.x需要Java 5以上。由於Spring Framework的設定相當複雜,所以,Spring也推出Spring Boot,讓設定變得簡單了,而且可以產生獨立的Spring App,Spring Boot也內建Tomcat及Jetty,讓開發MVC變得相對簡單多了。目前Spring Boot的版本是1.5.1,內建Tomcat 7 & 8、Jetty 8, 9.2 & 9.3、Undertow 1.3,需要Java 7以上(建議 Java 8)及Spring Framework 4.3.6以上。在參考網路上的資料時,請注意採用的Spring Framwork版本或者是否以Spring Boot為基礎。Tomcat 7.x與 Tomcat 8.x主要差別在於Tomcat 7.x符合Servlet 3.0及JSP2.2的規格並支援Java 6以上,而Tomcat 8.x符合Servlet 3.1及JSP2.3的規格並支援Java 7以上 (詳參: http://tomcat.apache.org/whichversion.html)。
從Spring3開始,採用JavaConfig,就可以採用Java而不是利用xml來設定。
參考資料
- http://projects.spring.io/spring-framework/ (官方網頁)
- https://www.mkyong.com/tutorials/spring-tutorials/ (Spring 3.x)
- https://www.mkyong.com/tutorials/spring-mvc-tutorials/ (Spring 2.5.6, Spring 3.x 部份已改寫為Spring 4.x)
- https://www.mkyong.com/tutorials/spring-security-tutorials/ (Spring 3.x)
- https://spring.io/tools
- https://technologyconversations.com/2014/06/18/build-tools/
- https://spring.io/guides/gs/sts/
- http://www.codedata.com.tw/database/mysql-tutorial-getting-started/ (中文)
- Spring 5
- 開源框架:Spring (Spring 5.1.2)
- https://openhome.cc/Gossip/SpringGossip/ (中文, Spring Framework 1.2.5)
- What's New in Spring Framework 5? (2017.6)
- What's New in Spring Framework 5.x (2018.9)
- Spring 5 New Features and Enhancements
- 開源框架:Spring (Spring 5.1.2)
以下的投影片簡單的介紹所需要的開發環境以及如何新增一個Spring Project