SpringBoot介紹與使用
1.什么是SpringBoot
SpringBoot是Spring項目中的一個子工程,與我們所熟知的Spring-framework 同屬於spring的產品:

我們可以看到下面的一段介紹:
Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configuration and is designed to get you up and running as quickly as possible.
翻譯一下:
用一些固定的方式來構建生產級別的spring應用。Spring Boot 推崇約定大於配置的方式以便於你能夠盡可能快速的啟動並運行程序。
其實人們把Spring Boot 稱為搭建程序的腳手架。其最主要作用就是幫我們快速的構建龐大的spring項目,並且盡可能的減少一切xml配置,做到開箱即用,迅速上手,讓我們關注與業務而非配置。
2.為什么要學習SpringBoot
java一直被人詬病的一點就是臃腫、麻煩。當我們還在辛苦的搭建項目時,可能Python程序員已經把功能寫好了,究其原因注意是兩點:
-
復雜的配置,
項目各種配置其實是開發時的損耗, 因為在思考 Spring 特性配置和解決業務問題之間需要進行思維切換,所以寫配置擠占了寫應用程序邏輯的時間。
-
一個是混亂的依賴管理。
項目的依賴管理也是件吃力不討好的事情。決定項目里要用哪些庫就已經夠讓人頭痛的了,你還要知道這些庫的哪個版本和其他庫不會有沖突,這難題實在太棘手。並且,依賴管理也是一種損耗,添加依賴不是寫應用程序代碼。一旦選錯了依賴的版本,隨之而來的不兼容問題毫無疑問會是生產力殺手。
而SpringBoot讓這一切成為過去!
Spring Boot 簡化了基於Spring的應用開發,只需要“run”就能創建一個獨立的、生產級別的Spring應用。Spring Boot為Spring平台及第三方庫提供開箱即用的設置(提供默認設置,存放默認配置的包就是啟動器),這樣我們就可以簡單的開始。多數Spring Boot應用只需要很少的Spring配置。
我們可以使用SpringBoot創建java應用,並使用java –jar 啟動它,就能得到一個生產級別的web工程。
3.SpringBoot的特點
Spring Boot 主要目標是:
- 為所有 Spring 的開發者提供一個非常快速的、廣泛接受的入門體驗
- 開箱即用(啟動器starter-其實就是SpringBoot提供的一個jar包),但通過自己設置參數(.properties),即可快速擺脫這種方式。
- 提供了一些大型項目中常見的非功能性特性,如內嵌服務器、安全、指標,健康檢測、外部化配置等
- 絕對沒有代碼生成,也無需 XML 配置。
更多細節,大家可以到官網查看。
4.SpringBoot搭建web工程
接下來,我們就來利用SpringBoot搭建一個web工程,體會一下SpringBoot的魅力所在!
4.1.創建工程
我們先新建一個空的工程:

工程名為demo:

新建一個model:

使用maven來構建:

然后填寫項目坐標:

目錄結構:

項目結構:

4.2.添加依賴
看到這里很多同學會有疑惑,前面說傳統開發的問題之一就是依賴管理混亂,怎么這里我們還需要管理依賴呢?難道SpringBoot不幫我們管理嗎?
別着急,現在我們的項目與SpringBoot還沒有什么關聯。SpringBoot提供了一個名為spring-boot-starter-parent的工程,里面已經對各種常用依賴(並非全部)的版本進行了管理,我們的項目需要以這個項目為父工程,這樣我們就不用操心依賴的版本問題了,需要什么依賴,直接引入坐標即可!
4.2.1.添加父工程坐標
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
4.2.2.添加web啟動器
為了讓SpringBoot幫我們完成各種自動配置,我們必須引入SpringBoot提供的自動配置依賴,我們稱為啟動器。因為我們是web項目,這里我們引入web啟動器:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
需要注意的是,我們並沒有在這里指定版本信息。因為SpringBoot的父工程已經對版本進行了管理了。
這個時候,我們會發現項目中多出了大量的依賴:

這些都是SpringBoot根據spring-boot-starter-web這個依賴自動引入的,而且所有的版本都已經管理好,不會出現沖突。
4.2.3.管理jdk版本
默認情況下,maven工程的jdk版本是1.5,而我們開發使用的是1.8,因此這里我們需要修改jdk版本,只需要簡單的添加以下屬性即可:
<properties>
<java.version>1.8</java.version>
</properties>
4.2.4.完整pom
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.leyou.demo</groupId>
<artifactId>springboot-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
4.3.啟動類
Spring Boot項目通過main函數即可啟動,我們需要創建一個啟動類:

然后編寫main函數:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4.4.編寫controller
接下來,我們就可以像以前那樣開發SpringMVC的項目了!
我們編寫一個controller:

代碼:
@RestController
public class HelloController {
@GetMapping("hello")
public String hello(){
return "hello, spring boot!";
}
}
4.5Yaml配置文件
配置文件除了可以使用application.properties類型,還可以使用后綴名為: .yml 或者 .yaml的類型,也就是:application.yml或者application.yaml
Yaml是一種簡潔的非標記語言。Yaml是以數據為中心,使用空白,縮進,分行組織數據,從而使得表示更加簡潔易讀。
基本格式:
#服務端口
server:
port: 8080
如果兩個配置文件都有,會把兩個文件的配置合並,如果有重復屬性,以Properties中的為准
4.6.啟動測試
接下來,我們運行main函數,查看控制台:

並且可以看到監聽的端口信息:

- 1)監聽的端口是8080
- 2)SpringMVC的映射路徑是:/
- 3)
/hello路徑已經映射到了HelloController中的hello()方法
打開頁面訪問:http://localhost:8080/hello

測試成功了!
