Spring Boot學習入門篇(一)--Hello World
簡介:Spring Boot是一種簡化原有Spring應用繁雜配置的微框架。使開發者從繁雜的各種配置檔案中解脫出來,通過Spring Boot能夠很簡單、很快速構建一個優秀的、產品級的Spring基礎應用。執行Spring Boot和執行普通的Java類一樣簡單,僅僅run
一下Spring Boot的入口main()
方法即可開啟應用;你也可以把Spring Boot應用打成jar,在命令列執行java -jar xxx.jar
命令來執行;或者打成war包部署到伺服器下執行伺服器來開啟應用。Spring Boot微框架考慮到了Spring平臺和第三方庫的情況,所以你需要做的則是最少的操作或配置。
Spring Boot特點:
1. 建立優秀的Spring Web應用;
2. 直接嵌入了Tomcat、Jetty和Undertow等三個Web伺服器,很方便的部署應用;
3. 提供一系列不同型別的starter
POMs簡化原有Spring應用繁雜的Maven配置;
4. 充分利用JavaConfig的配置模式以及“約定優於配置”的理念,自動化配置、裝配Spring,簡化了人為的配置;
5. 提供生產就緒型功能,如指標,健康檢查和外部配置(?不理解這點,求指教);
6. 沒有程式碼產生、沒有XML檔案要求配置。
應用要求
一、系統要求
Spring Boot 2.0.0版本要求:
- Java 8;
- Spring 5或以上;
- 專案構建工具:Maven 3.2或以上版本,Gradle 3.4或以上版本。
二、Servlet容器
Spring Boot 2.0.0內嵌的Servlet容器支援情況:
- Tomcat 8.5支援Servlet 3.1版本;
- Jetty 9.4支援Servlet 3.1版本;
- Undertow 1.3支援Servlet 3.1版本。
換句話說,你可以把Spring Boot應用部署到任何支援Servlet 3.0以上版本的Servlet容器裡。
第一個Spring Boot應用之Hello World
在此,使用idea作為Spring Boot應用的開發工具。使用Maven來管理專案依賴。
一,idea自動化構建Spring Boot應用
1、【File】-> 【New】 -> 【Project】出現New Project面板,選中【Spring Initializr】,填寫情況預設即可,如下圖:
注意:
Initializr Service URL為https://start.spring.io,這一步驟需要聯網,請確保你的電腦正常聯網,不然專案構建會失敗。
2、點選【Next】,填寫情況預設即可,如下圖:
3、點選【Next】,填寫情況如下圖:
注意:
1,這裡我們選擇Spring Boot 2.0.0版本;2,選擇依賴中,我們這裡勾選Web,表示這裡構建的是Web應用。
4、點選【Next】,填寫專案名和選擇所屬本地目錄,這裡專案名為hellosb-auto,如下圖:
5、點選【Finish】專案開始構建,等待一會,你會看到一個Spring Boot應用,結構如下圖:
@SpringBootApplication
就這樣,人為沒有新增任何的配置,一個Spring Boot的Web應用就快速構建成功了。每個Spring Boot專案都會有一個@SpringBootApplication
註解,@SpringBootApplication
註解的XXXAplication.java類,表示這是一個Spring Boot應用。Spring Boot建議只有一個帶有該註解的類,因為@SpringBootApplication
註解的類是Spring Boot專案的入口類。執行這個Spring Boot的入口類,Spring Boot讀取到註解@SpringBootApplication
註解的註解@EnableAutoConfiguration
,會根據你引入的Starter依賴來自動配置專案(具體詳情,後面學習進階篇中介紹),其中,Spring讀取@EnableAutoConfiguration
註解所在的目錄來進行掃面裝配。
Starters and Auto-Configuration
Auto-configuration is designed to work well with “Starters”, but the two concepts are not directly
tied. You are free to pick-and-choose jar dependencies outside of the starters and Spring Boot will still do its best to auto-configure your application.
因為一系列Starter,Spring能夠很好的對Spring Boot應用進行自動配置,但是自動配置和Starter並沒有直接聯絡在一起。因為Starters,你省了挑選jar依賴,而Spring Boot卻能儘可能好的自動配置你的應用。
main方法
入口方法main()
方法執行,main()
方法委託SpringApplication
類執行run()方法
,SpringApplication將引導Spring Boot應用,開啟Spring來自動配置Tomcat伺服器。把入口類作為run()
方法入參來告訴SpringApplication類這個入口類是一個基本的Spring元件。也因此,可以在這個類上註解@RestController
來作為一個控制類處理請求。
看看pom.xml檔案具體情況:
<?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.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<!--本POM會繼承spring-boot-starter-parent的POM,即會把專案預設的一些基本依賴繼承引用進來-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--專案的一些基本屬性。其中,本專案使用Spring Boot 2.0.0,所以必須顯示配置使用jdk1.8,因為Spring預設使用jdk1.6-->
<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>
<!--Spring通過新增spring-boot-starter-*這樣的依賴就能支援具體的某個功能。引入spring-boot-starter-web依賴,會
把Tomcat等Servlet容器以及SpringMVC等依賴引用進來-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--新增此依賴,會出現左邊專案目錄測試包test,並提供測試相關的一些依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!--引入Spring Boot專案構建的maven外掛,可以更方便的構建專案-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
6、修改入口類如下程式碼,然後點選DemoApplication.java,滑鼠右鍵run DemoApplication
執行專案,你會發現內建的Tomcat伺服器啟動起來,然後訪問http://localhost:8080 頁面出現hello world即成功。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //表示這個入口類也是控制類,[email protected][email protected]
@SpringBootApplication
public class DemoApplication {
@RequestMapping("/") //請求的對映路由
public String home(){
return "hello world";
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
二,idea手動構建Spring Boot應用
1、【File】-> 【New】 -> 【Project】出現New Project面板,選中【Maven】,填寫情況預設即可,如下圖:
2、點選【Next】,填寫專案Maven座標情況如下圖:
3、點選【Next】,填寫專案名和專案本地所屬目錄,這裡只填寫了專案名稱為hellosb-hand,其餘預設,點選【Finish】即可建立maven專案基本結構。
4、修改pom.xml檔案:
<?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.example</groupId>
<artifactId>demo2</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</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-web</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>
更新專案依賴:滑鼠右鍵專案根目錄 -> 【Maven】 -> 【Download Sources】。
4、構建專案結構如下圖,並新增Spring Boot入口類檔案Demo2Application.java和配置檔案application.yml(提示:Spring Boot支援yml和properties兩種副檔名的配置檔案)。
Demo2Application.java程式碼如下:
package com.example.demo2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by chao.du on 2017/6/12.
*/
@RestController
@SpringBootApplication
public class Demo2Application {
@RequestMapping("/")
public String getHome(){
return "hello world!";
}
public static void main(String[] args) {
SpringApplication.run(Demo2Application.class,args);
}
}
5、測試:滑鼠右鍵Demo2Application.java -> 【run Demo2Application】,在瀏覽器中輸入localhost:8080檢視到如下頁面即成功!