1. 程式人生 > >Spring Boot初識(1)-瞭解Spring Boot

Spring Boot初識(1)-瞭解Spring Boot

寫在前面:半年工作經驗的Java程式設計師一枚,奈何公司用的是自研的Web框架和RPC框架,本著good good study,day day up的精神和為以後發展的考慮覺得自己需要學點開源的東西,寫的文章主要是自己的認識和踩過的坑,如果覺得我哪裡寫的不正確歡迎指教。

一.本文介紹

    首先在閱讀這篇文章前我要先說一下學習Spring Boot需要的基礎,首當其充需要有Java基礎,倒是沒必要精通,但起碼要知道繼承封裝多型,或是equals和==有什麼區別(==對於基本型別來說比較的是值,對於引用型別比較的是記憶體地址,兩個相同的物件即使屬性值都一樣但記憶體地址可能也不是一樣的;equals如果不重寫的話和==是一樣的,String、Integer等對equals進行了重寫比較的也是值)。其次就是Maven了,Maven作為專案管理工具最主要是對專案依賴關係的管理,Maven出現之前一個Java專案需要把各種jar包放到專案中,這就會導致專案本身臃腫或者出現難以解決的版本衝突,Maven通過groupId、artifactId、version作為一個條件唯一確定一個需要的jar包。最後如果你用過Spring那是極好的了,因為Spring Boot本著"約束大於配置"的理念就是對Spring的進一步封裝,沒用過也沒關係因為Spring Boot使用起來容易上手。

二.為什麼使用Spring Boot

    JavaWeb專案的開發由最初的Servlet+Jsp到後來Spring的出現可謂是一大進步,但Spring複雜的配置同樣讓人頭疼,Spring Boot主要依賴一個配置檔案就可以完成Web專案啟動,而且不需要依賴外部的Web容器或外掛就可以執行,五分鐘足夠用Spring Boot寫一個Hello World出來了。Spring Boot讓開發人員不必把精力浪費在框架搭建上而是專注於業務的開發,我認為這是最大的一點好處,當然我覺得越簡單的東西可能坑也越多,前面說過Spring Boot是基於“約束大於配置”,如果不遵循約束又不瞭解Spring Boot的底層實現就會出一些莫名其妙的問題,我已經踩過一些坑了。

三.開始第一個Spring Boot的Hello World

    我用的是IDEA作為開發工具,一般建立Spring Boot專案首先可以從官網直接下載模板使用,或者是IDEA的Spring initilalizr功能(這個需要fanqiang),不過我覺得沒有這個必要,直接建一個Maven專案把Spring Boot相關的依賴加進去就好了。

    1.先新建一個Maven專案

    

    

    輸入GroupId、ArtifactId後直接點Finish就好了

    2.我們要加入Spring Boot的相關依賴       

<?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>cn.test</groupId>
    <artifactId>first</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- Spring Boot引入的依賴,提供了一些預設配置 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/>
    </parent>
    <dependencies>
        <!-- 支援Web需要引入的依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

     只需要這兩個依賴就能夠支援最簡單的Web功能,現在暫時還不用使用配置檔案(以後連資料庫或者支援輸出日誌到檔案再使用)。整個demo如下:

   

package cn.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
         SpringApplication.run(DemoApplication.class, args);
    }
}
package cn.test.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @RequestMapping("/test")
    public String test(){
        return "Spring Boot Demo";
    }
}

    3.執行DemoApplication裡的Main函式輸出如下日誌:

 

    使用了內建的Tomcat並啟動了8080埠,訪問http://localhost:8080/test效果如下:

    

    至此一個最簡單的基於Spring Boot的demo已經完成了,說一下我遇到的坑點:

  1. DemoApplication作為Spring Boot的啟動類必須放在某個包下否則會報錯,並且Spring Boot會遞迴掃描DemoApplication所在包下的檔案
  2. DemoApplication裡的@SpringBootApplication是Spring Boot啟動的關鍵註解必不可少
  3. TestController裡的@RestController註解的作用有兩個,首先是把TestController這個類裡的標了@RequestMapping註解的方法暴露出去讓你在位址列裡敲對應的URL能訪問到,其次就是把返回的資料以字串形式展示。
  4. @RequestMapping註解就是規定一個標識,並把標識與方法繫結

 四.總結

    到這裡我們已經有一個基於Spring Boot的Web框架了,如果用過Spring的話可以看到實現同樣的功能Spring Boot遠比Spring要簡單的多,這其中的關鍵第一個是spring-boot-starter-parent這個依賴,第二個是@SpringBootApplication這個啟動註解,後續會把Spring Boot與Mybatis相結合實現簡單的增刪改查,與Swagger2相結合自動生成介面文件。