亡羊補牢,為時不晚。人在任何時候做自己想做的事情,有這種自由,還是很值得欣慰的。
我之前做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命令行執行如下命令
mvn archetype:generate ^ # ^ 為命令行連接符
-DgroupId=org.sang ^ # 組織ID
-DartifactId=chapter01 ^ # 項目名稱
-DarchetypeArtifactId=maven-archetype-quickstart ^ # 項目骨架
-DinteractiveMode=false # 是否使用交互模式
會生成對應的目錄,導入到IDE即可。
目前應該沒有多少人在用這種方式創建了。大多是用的IDE創建。
IDE創建
IDE創建項目這里就講Eclipse的創建即可
- 打開IDE
- 創建項目的時候選擇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不熟悉的朋友,請見
編寫啟動類
其實就是寫啟動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文件,請見