01-SpringBoot入門

亡羊補牢,為時不晚。人在任何時候做自己想做的事情,有這種自由,還是很值得欣慰的。

我之前做Web開發的時候,已經是5年前了吧。

現在技術日新月異,我想我這把老骨頭還可以出來繼續發揮下余熱。

[TOC]

開發環境說明

  • win10
  • openJDK 1.8

我就不搞什么Ubantu,CentOS啥的了,部署的時候,是沒有太多區別的。

SpringBoot簡介

SpringBoot是一種利用Spring框架快速開發、部署的工具,它有如下幾個優勢:

  • 快速搭建
  • 快速使用
  • 提供生產級的服務監控
  • 快速部署(自帶服務器)
  • 非功能性通用配置
  • Java配置,無代碼,XML書寫等繁瑣事

就頭4條,就很吸引人了。

笨辦法創建一個SpringBoot

為什么說是笨辦法呢?因為有模板化創建的方式方法,不用這么手工去做。

但是本著后續看代碼找問題的態度,我們還是要講一下代碼的基本創建的。

如果你要快,那請直接看“模板化構建”小節描述。

JAVA版本選擇

Oracel JDK和Open JDK兩個分支,推薦選擇Red Hat提供的openJDK版本,后續JDK的8和11都是Red Hat維護,下載鏈接,推薦用8號版本。

OpenJDK的環境變量配置,是自動添加上的,所以省事很多。

選擇IDE

我們常用的編碼工具有2個:

  • Eclipse
  • IntelliJ IDEA(后面就叫IDEA)

兩者都是很優秀的IDE,IDEA是后起之秀,市場占有率逐年上升,Eclipse是個老大哥,使用起來很節約資源。建議電腦沒有SSD,不是很硬的話,還是選擇Eclipse。

關于更多的IDE選擇問題,請諸位查看網上更多相關資料,筆者只是提了一些建議罷了。
在這里提供eclipse下載,筆者已經看到有基于docker的下一代開發IDE了。

當然,還有Spring推出的all in one,下載這個很省事。

我覺得還可以使用純凈版的eclipse,用什么下什么。畢竟現在還在學,不是說效率出奇跡的時候。

創建項目

創建項目常見的方式有三種,分別是:

  • mvn命令行
  • Eclipse中創建Maven工程
  • IDEA中創建maven工程

核心就是maven這套體系,IDE只是包個殼,提供更多便利而已。

mvn創建

安裝配置好maven后,CMD命令行執行如下命令

maven的安裝與配置

mvn archetype:generate ^  # ^ 為命令行連接符
-DgroupId=org.sang ^  # 組織ID
-DartifactId=chapter01 ^ # 項目名稱
-DarchetypeArtifactId=maven-archetype-quickstart ^ # 項目骨架
-DinteractiveMode=false # 是否使用交互模式

會生成對應的目錄,導入到IDE即可。

目前應該沒有多少人在用這種方式創建了。大多是用的IDE創建。

IDE創建

IDE創建項目這里就講Eclipse的創建即可

  1. 打開IDE
  2. 創建項目的時候選擇Maven Project
    • 選中Use default Workspace location
    • 選擇默認項目骨架(Archetype)
    • 填寫項目信息,各種項目參數,路徑-----這里記得是選擇快照版本(snapshot)
    • 完成

IDEA也是這種流程。

構建項目

構建項目,就是要把項目做成一個能跑起來的過程。分為如下三步:加載依賴、編寫啟動類、

加載依賴

這里就是書寫maven配置,建議如下配置:

在pom.xml中配置

添加spring-boot-starter-parent作為parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
</parent>

這個starter提供了maven的配置,而且還提供dependency-management,開發者根本不用關心引入包的其他依賴版本配置,方便了依賴管理,所以,引入了starter,這就是一個全自動配置包!

填了parent的坑,子類引用就方便多了。比如我們要整一個web的starter,如下:

<dependencies>
    <dependency>
        <groupId>org.springframwork.boot</groupId> # 保持parent一致
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

對,這又是一個starter,也是一個全自動。

對于maven不熟悉的朋友,請見

菜鳥maven教程

編寫啟動類

其實就是寫啟動APP類,和C層的controller類

APP

APP類也叫啟動類,也就是項目的入口類。maven的項目架構上已經創建了項目包,在工程的java目錄下創建一個APP類:

@EnableAutoConfiguration // 開啟自動化配置
@ComponentScan // 開啟C層映射包掃描,讓請求映射到對應的方法中去
public class App{
    public static void main(String[] args){
        // 聲明默認啟動類,args為啟動時輸入的參數數組。
        SpringApplication.run(App.class,args); 
    }
}
Controller

SpringMVC的控制器 HelloController,C層。

@RestController 
public class HelloController{
    @GetMapping("/hello") // 定義接收hello請求
    public String hello(){
        return "hello moto!";
    }
}

@RestController=@Controller+@ResponseBody,這是一個組合注釋

  • @Controller 是一種特殊化的@Component 類。習慣于和@RequestMapping綁定來使用,后者是用來指定路由映射的。

  • @ResponseBody 是用來把返回對象自動序列化成HttpResponse的。

APP與Controller的注解最優寫法

注解的天下:

APP啟動類,2個注解(類注解)

Controller類,2個注解(1個類注解,1個方法注解)

這是不是有點麻煩了?

我估計作者也是這么覺的,但是思來想去,Controller的注解不好搞,就把啟動類的注解優化下吧。所以APP啟動類注解可以這么寫了:

@Spring BootApplication // 組合注解,有之前2個注解的功能(自動化配置+映射包掃描)
public class App{
    public static void main(String[] args){
        SpringApplication.run(App.class,args); 
    }
}

至此,我們的構建就基本完成了。接下來我們啟動項目看效果。

啟動項目

一般有三種啟動方式:

  • mvn命令行啟動
  • IDE直接運行main方法(啟動定義類)
  • 打包啟動

三種場景都有運用的地方。

mvn命令行啟動

需要進入項目的根目錄,就是pom.xml文件的那個目錄

mvn spring-boot:run

接下來我們打開瀏覽器,在 http://localhost:8080/hello 可以看到效果。

IDE直接運行main方法

這個就是IDE上鼠標右鍵run即可,選擇SpringBootApp啟動。同樣在瀏覽器上可以查看效果。

打包啟動

通過Springboot把項目打成jar包運行。我們部署的時候是非常常見的。

需要3步完成

  • 添加plugin到pom.xml文件中

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework,boot</groupId> # 保持parent一致
                <artifactId>spring-boot-maven-plugin</artifactId> # 添加mavne打包插件
            </plugin>
        </plugins>
    </build>
    

    這里是不是同樣需要rebuild進行生效,若Eclipse選中的autoBuild,則是改后自動生效,個人推薦手動。

  • 運行mvn命令打包

    這里應該是需要進入對應項目根目錄下進行如此操作的。

    mvn package 
    
  • java -jar命令啟動

    java -jar [jar包文件路徑]
    

其實打包啟動的詳細配置還有很多,這里我們不多說,后續有的是機會描述。

是不是覺得這么一步一步構建也挺麻煩的?不用怕,模板化構建會很快讓你改變看法

模板化構建

關于模板化構建,簡單來講就是在“笨辦法構建一個SpringBoot”里面所描述的東西,我們一步帶過,通過一個模板工具,填寫一些參數,讓工具幫我們生成我們要的基礎構建。

一般常見構建方法有三種:

  • 在線構建
  • IDEA構建
  • STS構建

在線構建

SpringBoot官方提供的構建方式,通過在一個頁面填寫參數生成一個可用IDE導入的文件。

這個神奇的網站就是:https://start.spring.io/

但愿不要被墻

在這個頁面,一般需要填寫幾個參數

  • 構建方式:Maven還是Gradle
  • 語言:java or other
  • SpringBootbanben hao
  • 項目的組織ID(包名)
  • 模塊名稱
  • 項目依賴

寫好過后就可以生成下載文件了。

我們在Eclipse中,以maven的方式導入,然后項目,右鍵,maven,updateProject,選中Froce Upadate of Shnapshots/Realease后,點擊OK。——這樣可以解決項目導入過后的報錯。

IDEA構建

社區版的IDEA無法構建,請知悉

由于筆者不會選擇這種方式(垃圾電腦),故只是說下入口。

  • 創建項目的時候,選擇 Spring Initializer
  • ……

STS構建

STS是spring tool suite的縮寫,是基于eclipse的的工具。是開發spring應用對eclipse進行定制的產物,為spring應用的開發提供充分的支持,使spring開發更加的簡單、高效。

all in one的形式下載:下載地址

關于離線安裝方式,這篇文章寫的很清楚了。使用方式

項目new--> spring start project,即可開啟STS構建。

筆者稍微試了一下,maven在中國的速度,真是驚天地,泣鬼神。。。。。

為毛我覺得使用了撐桿工具加速,更坑了呢?

我RNMGB,越搞越爛,一堆報錯。。。。

我知道你需要這個,阿里云鏡像配置。

FAQ

Q:新建項目pom.xml中報錯:Failure to transfer org.apache.maven.plugins:maven-compiler-plugin:pom:3.5.0 from ……

A:解決辦法,右鍵工程,選擇maven->update project,勾選force update ……,點擊OK。

同時筆者建議,最好去掉自動build(在菜單欄的project里面關閉。)


Q:eclipse的maven構建很慢啊!!

A:請用阿里云鏡像。這速度,跟之前比就是飛起了。如果沒有安裝maven,eclipse自帶的,思路是自己興建一個maven的config文件,請見

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容

  • https://github.com/cuzz1/springboot-learning 一、Spring Boo...
    cuzz_閱讀 3,438評論 1 6
  • 02_SpringBoot入門 1、簡介 簡化Spring應用開發的一個框架。整個Spring技術棧的一個大整合。...
    頑強的小彈殼閱讀 198評論 0 0
  • 陳二妞是個啞巴,出生之后就沒說話,我想那該有多寂寞啊。 二妞的媽媽精神不太正常,懷她的時候誤食了過期藥品,好不容易...
    劉阿蠻閱讀 724評論 2 1
  • 班上有一個男生,笑點極低,低到遠遠地消失在地平線以下。 我們眼里一件稀松平常的似乎沒什么笑點的事,就...
    素言錦敘閱讀 741評論 11 12
  • 文/云中荷風 有的路筆直通達 有的路蜿蜒曲折 有的路姹紫嫣紅 有的路孤獨寂寞 有的路 走過了 還想走 有的路 走過...
    云中荷風閱讀 464評論 16 35