01-SpringBoot入門

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

我之前做Web開發(fā)的時(shí)候,已經(jīng)是5年前了吧。

現(xiàn)在技術(shù)日新月異,我想我這把老骨頭還可以出來繼續(xù)發(fā)揮下余熱。

[TOC]

開發(fā)環(huán)境說明

  • win10
  • openJDK 1.8

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

SpringBoot簡介

SpringBoot是一種利用Spring框架快速開發(fā)、部署的工具,它有如下幾個(gè)優(yōu)勢:

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

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

笨辦法創(chuàng)建一個(gè)SpringBoot

為什么說是笨辦法呢?因?yàn)橛心0寤瘎?chuàng)建的方式方法,不用這么手工去做。

但是本著后續(xù)看代碼找問題的態(tài)度,我們還是要講一下代碼的基本創(chuàng)建的。

如果你要快,那請(qǐng)直接看“模板化構(gòu)建”小節(jié)描述。

JAVA版本選擇

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

OpenJDK的環(huán)境變量配置,是自動(dòng)添加上的,所以省事很多。

選擇IDE

我們常用的編碼工具有2個(gè):

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

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

關(guān)于更多的IDE選擇問題,請(qǐng)諸位查看網(wǎng)上更多相關(guān)資料,筆者只是提了一些建議罷了。
在這里提供eclipse下載,筆者已經(jīng)看到有基于docker的下一代開發(fā)IDE了。

當(dāng)然,還有Spring推出的all in one,下載這個(gè)很省事。

我覺得還可以使用純凈版的eclipse,用什么下什么。畢竟現(xiàn)在還在學(xué),不是說效率出奇跡的時(shí)候。

創(chuàng)建項(xiàng)目

創(chuàng)建項(xiàng)目常見的方式有三種,分別是:

  • mvn命令行
  • Eclipse中創(chuàng)建Maven工程
  • IDEA中創(chuàng)建maven工程

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

mvn創(chuàng)建

安裝配置好maven后,CMD命令行執(zhí)行如下命令

maven的安裝與配置

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

會(huì)生成對(duì)應(yīng)的目錄,導(dǎo)入到IDE即可。

目前應(yīng)該沒有多少人在用這種方式創(chuàng)建了。大多是用的IDE創(chuàng)建。

IDE創(chuàng)建

IDE創(chuàng)建項(xiàng)目這里就講Eclipse的創(chuàng)建即可

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

IDEA也是這種流程。

構(gòu)建項(xiàng)目

構(gòu)建項(xiàng)目,就是要把項(xiàng)目做成一個(gè)能跑起來的過程。分為如下三步:加載依賴、編寫啟動(dòng)類、

加載依賴

這里就是書寫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>

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

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

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

對(duì),這又是一個(gè)starter,也是一個(gè)全自動(dòng)。

對(duì)于maven不熟悉的朋友,請(qǐng)見

菜鳥maven教程

編寫啟動(dòng)類

其實(shí)就是寫啟動(dòng)APP類,和C層的controller類

APP

APP類也叫啟動(dòng)類,也就是項(xiàng)目的入口類。maven的項(xiàng)目架構(gòu)上已經(jīng)創(chuàng)建了項(xiàng)目包,在工程的java目錄下創(chuàng)建一個(gè)APP類:

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

SpringMVC的控制器 HelloController,C層。

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

@RestController=@Controller+@ResponseBody,這是一個(gè)組合注釋

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

  • @ResponseBody 是用來把返回對(duì)象自動(dòng)序列化成HttpResponse的。

APP與Controller的注解最優(yōu)寫法

注解的天下:

APP啟動(dòng)類,2個(gè)注解(類注解)

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

這是不是有點(diǎn)麻煩了?

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

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

至此,我們的構(gòu)建就基本完成了。接下來我們啟動(dòng)項(xiàng)目看效果。

啟動(dòng)項(xiàng)目

一般有三種啟動(dòng)方式:

  • mvn命令行啟動(dòng)
  • IDE直接運(yùn)行main方法(啟動(dòng)定義類)
  • 打包啟動(dòng)

三種場景都有運(yùn)用的地方。

mvn命令行啟動(dòng)

需要進(jìn)入項(xiàng)目的根目錄,就是pom.xml文件的那個(gè)目錄

mvn spring-boot:run

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

IDE直接運(yùn)行main方法

這個(gè)就是IDE上鼠標(biāo)右鍵run即可,選擇SpringBootApp啟動(dòng)。同樣在瀏覽器上可以查看效果。

打包啟動(dòng)

通過Springboot把項(xiàng)目打成jar包運(yùn)行。我們部署的時(shí)候是非常常見的。

需要3步完成

  • 添加plugin到pom.xml文件中

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

    這里是不是同樣需要rebuild進(jìn)行生效,若Eclipse選中的autoBuild,則是改后自動(dòng)生效,個(gè)人推薦手動(dòng)。

  • 運(yùn)行mvn命令打包

    這里應(yīng)該是需要進(jìn)入對(duì)應(yīng)項(xiàng)目根目錄下進(jìn)行如此操作的。

    mvn package 
    
  • java -jar命令啟動(dòng)

    java -jar [jar包文件路徑]
    

其實(shí)打包啟動(dòng)的詳細(xì)配置還有很多,這里我們不多說,后續(xù)有的是機(jī)會(huì)描述。

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

模板化構(gòu)建

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

一般常見構(gòu)建方法有三種:

  • 在線構(gòu)建
  • IDEA構(gòu)建
  • STS構(gòu)建

在線構(gòu)建

SpringBoot官方提供的構(gòu)建方式,通過在一個(gè)頁面填寫參數(shù)生成一個(gè)可用IDE導(dǎo)入的文件。

這個(gè)神奇的網(wǎng)站就是:https://start.spring.io/

但愿不要被墻

在這個(gè)頁面,一般需要填寫幾個(gè)參數(shù)

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

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

我們?cè)贓clipse中,以maven的方式導(dǎo)入,然后項(xiàng)目,右鍵,maven,updateProject,選中Froce Upadate of Shnapshots/Realease后,點(diǎn)擊OK。——這樣可以解決項(xiàng)目導(dǎo)入過后的報(bào)錯(cuò)。

IDEA構(gòu)建

社區(qū)版的IDEA無法構(gòu)建,請(qǐng)知悉

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

  • 創(chuàng)建項(xiàng)目的時(shí)候,選擇 Spring Initializer
  • ……

STS構(gòu)建

STS是spring tool suite的縮寫,是基于eclipse的的工具。是開發(fā)spring應(yīng)用對(duì)eclipse進(jìn)行定制的產(chǎn)物,為spring應(yīng)用的開發(fā)提供充分的支持,使spring開發(fā)更加的簡單、高效。

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

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

項(xiàng)目new--> spring start project,即可開啟STS構(gòu)建。

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

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

我RNMGB,越搞越爛,一堆報(bào)錯(cuò)。。。。

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

FAQ

Q:新建項(xiàng)目pom.xml中報(bào)錯(cuò):Failure to transfer org.apache.maven.plugins:maven-compiler-plugin:pom:3.5.0 from ……

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

同時(shí)筆者建議,最好去掉自動(dòng)build(在菜單欄的project里面關(guān)閉。)


Q:eclipse的maven構(gòu)建很慢啊!!

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

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