3.1 認識Spring Boot
Spring Boot是一個框架,是一種全新的編程規范,它的產生簡化了對框架的使用,簡化了Spring眾多的框架中大量的繁瑣的配置文件,所以說Spring Boot是一個服務於框架的框架,服務范圍是簡化文件的配置。
Spring Boot的核心功能:
- 獨立運行的spring項目:可以以jar包的形式獨立運行,通過Java -jar xx.jar來運行。
- 內嵌的servlet容器:可以選擇內嵌的Tomcat、Jetty或者Undertow。
- 提供starter簡化,maven配置:通過一系列的starter pom 來簡化maven的依賴加載。
- 自動配置spring:spring boot 會根據在類路徑中的jar包、類,為jar包里的類自動配置bean,這樣會極大的減少我們要使用的配置。
- 准生產的應用監控:提供了基於http、ssh、telnet對運行的項目進行監控。
- 無代碼生成的xml配置:通過條件注解來實現。
Spring Boot的優點:
- 快速構建項目
- 對主流的開發框架的無配置集成
- 項目可獨立運行,無須外部用來servlet容器
- 提供運行時的應用監控
- 極大的提高了開發部署效率
- 與雲計算天然集成
3.2 Spring Boot 搭建Web項目
打開Eclipse IDE,新建Srping Boot Project,步驟:File->Project->Spring Boot->Spring Starter Project
下圖中標紅圈的的三項需要自己去設定,其它是自動填寫的,接着“下一步”。
選擇Spring所用到的依賴框架,這里搜索並選擇“Spring Web”、“Thymeleaf”,用來支持Web的框架和網頁中的Thymeleaf模板,接下來就可以完成了。
一個完整的Spring Web的項目生成了。項目的完整目錄:
3.3 配置pom.xml
為了使開發環境很好的兼容,我將當前項目pom.xml配置中spring 框架的版本做了下修改,修改后的配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <packaging>war</packaging> <groupId>com.gg</groupId> <artifactId>SpringBoot_01</artifactId> <version>0.0.1-SNAPSHOT</version> <name>SpringBoot_01</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--jsp支持--> <!-- servlet 依賴. --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <scope>provided</scope> </dependency> <!-- tomcat 的支持.--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jsp-api</artifactId> <scope>provided</scope> </dependency> <!-- 打war包時加入此項, 告訴spring-boot tomcat相關jar包用外部的,不要打進去 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- 引入 thymeleaf 模板依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
3.4 環境版本的兼容
當我們配置完pom.xml,Maven更新完項目之后經常出現這個小紅叉,這個原因一般是jst.web中版本的問題。
可以查看並修改一下:將原先的4.0修改成3.1
修改的時候發現提示“無法修改”,那么可以通過一下的方式來完成,修改Eclipse項目的配置文件,將<installed facet="jst.web" version="4.0"/>改成<installed facet="jst.web" version="3.1"/>
<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="java" version="1.8"/> <installed facet="jst.web" version="3.1"/> <installed facet="wst.jsdt.web" version="1.0"/> </faceted-project>
修改完成之后,重啟Eclipse IDE,如果發現那個小紅叉沒消失,可以更新一下Maven Project,更新完之后小紅叉就消失了。
3.5 配置application.properties
配置tomcat server的端口、servlet路徑、spring mvc的視圖路徑和文件后綴、thymeleaf模板的配置。
#tomcat server.port=8080 server.servlet.context-path=/ server.tomcat.uri-encoding=UTF-8 #thymeleaf spring.thymeleaf.mode=HTML spring.thymeleaf.cache=true spring.thymeleaf.enabled=true spring.thymeleaf.encoding=utf-8 spring.thymeleaf.suffix=.html ##webapp/templates spring.thymeleaf.prefix=/templates/ ##resources/templates #spring.thymeleaf.prefix=classpath:templates/
3.6 構建mvc示例代碼
1、 JavaBean源代碼: User.java

package com.gg.bean; public class User { private String name; private Integer age; public User() { super(); } public User(String name,Integer age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
2、 控制器源代碼: UserController.java

package com.gg.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.gg.bean.User; @Controller @RequestMapping("/") public class UserController { @RequestMapping("/hello") @ResponseBody String home() { System.out.print("hello"); return "Hello ,spring boot!"; } @RequestMapping("/") public String index() { System.out.print("index"); return "index"; } @RequestMapping("/userLogin") public String userLogin(Model model) { User user = new User("guozhong",30); model.addAttribute("user",user); return "userLogin"; } }
3、 應用主程序源代碼: SpringBoot01Application.java

package com.gg.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication(scanBasePackages={"com.gg.controller"}) public class SpringBoot01Application { public static void main(String[] args) { SpringApplication.run(SpringBoot01Application.class, args); System.out.print("init app"); } }
4、 視圖文件源代碼
在webapp\ templates目錄下創建視圖文件,當然可以創建到resources\templates目錄,這里因人而異。但是注意一點application.properties的配置路徑不同:
- 視圖文件放到webapp\ templates目錄,配置為spring.thymeleaf.prefix=/templates/
- 若視圖文件放到resources\templates目錄,配置為spring.thymeleaf.prefix=classpath:templates/
index.html代碼:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3> this is my first springboot project</h3> <a href="/userLogin">west world</a> </body> </html>
userLogin.html代碼:

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> welcome to west world -html <span th:text="${user.name}"></span> </body> </html>
5、 最終的項目結構:
3.7 構建發布項目示例
選擇項目“SpringBoot_01”,鼠標右鍵, “Run As”->“5 Maven build”,如下圖:
按照以上設置用Maven構建,開始執行。當看到控制台打印出構建成功就表示我們的項目構建完成了。
3.8 運行項目示例並測試
構建發布完成項目后,接下來啟動運行。按照下圖的步驟:選擇項目“SpringBoot_01”,鼠標右鍵, “Run As”->“Spring Boot App”
測試一下,在瀏覽器輸入:http://127.0.0.1:8080/ 一個完整的spring boot mvc的web應用運行起來了,是不是很簡單。
3.9 項目git源代碼
https://github.com/FengGuoZhong/java-spring-web
https://github.com/FengGuoZhong/java-spring-web/tree/master/SpringBoot_01