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來設定。

參考資料

以下的投影片簡單的介紹所需要的開發環境以及如何新增一個Spring Project

01_Environment.ppt
02_SpringProject.ppt