1. 程式人生 > >Spring Boot學習入門篇(一)--Hello World

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檢視到如下頁面即成功!

這裡寫圖片描述