[TOC]
# 一、搭建基礎環境
## 1. 下載、安裝[**JDK**](www.oracle.com/technetwork/java/javase/downloads)
如果你還想嘗鮮一下JDK9,請點[這里](https://jdk9.java.net/)
## 2. 下載、安裝[**msys2**](http://msys2.github.io)
```
pacman -Syu
pacman -S man-db
```
## 3. 安裝git
```
pacman -S git
```
## 4. 下載、安裝[**Maven**](http://maven.apache.org)
* 配置maven倉庫
~~~
<!-- 設定除中央倉庫(repo1.maven.org/maven2/)外的其他倉庫,按設定順序進行查找. -->
<repositories>
<!-- 如有Nexus私服, 取消注釋并指向正確的服務器地址.-->
<!--<repository>
<id>nexus-snapshots-local</id>
<name>Team Nexus Repository Local</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>nexus-snapshots</id>
<name>Team Nexus Repository</name>
<url>http://192.168.0.100:8081/nexus/content/repositories/snapshots/</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>-->
~~~
* [擴展閱讀][Maven實戰(四)——基于Maven的持續集成實踐](http://www.infoq.com/cn/articles/xxb-maven-4-ci/)
* 如果有興趣也可以嘗試[Gradle](http://gradle.org/gradle-download/)
* [Gradle 修改 Maven 倉庫地址](http://www.tuicool.com/articles/363iy2n)
## 5. 安裝SpringBoot CLI
安裝 [SdkMan](http://sdkman.io/)
~~~
$ curl -s api.sdkman.io | bash
~~~
或
```
$ curl -s get.sdkman.io | bash
```
* 安裝Spring Boot CLI
~~~
$ sdk install springboot
~~~
* 查看springboot CLI
```
$ sdk ls springboot
```
* [Spring Boot Reference Guide](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-installing-spring-boot)
* 驗證spring是否安裝成功:
```
$ spring --version
```
## 6. 學習Spring Boot
### 6.1 構建REST服務1:
下載范例工程:
~~~
git clone https://github.com/qujian/spring-hello.git
~~~
編譯運行:
~~~
cd spring-hello
mvn spring-boot:run
~~~
### 6.1 構建REST服務2:
下載樣板工程:
~~~
git clone https://github.com/spring-guides/gs-rest-service.git
~~~
編譯運行:
~~~
cd gs-rest-service/complete
mvn package
~~~
運行:
~~~
java -jar target/gs-rest-service-0.1.0.jar
~~~
或
~~~
mvn spring-boot:run
~~~
測試:
~~~
curl http://localhost:8080/greeting
~~~
* [參考][深入學習微框架:Spring Boot](http://www.infoq.com/cn/articles/microframeworks1-spring-boot)
* [Spring Boot 參考指南](https://www.gitbook.com/book/qbgbook/spring-boot-reference-guide-zh/details)
## 7. 安裝Intellij Idea
* 小提示
> Facets和Artifacts的區別:
Facets表示這個module有什么特征,如Web,Spring和Hibernate等。 artifact這個和maven的概念一下,就是這個module要產出什么,war,jar還是ear。
在給項目配置Artifacts的時候有好多個type的選項,exploed是什么意思:
explode 在這里你可以理解為展開,不壓縮的意思。也就是war、jar等產出物沒壓縮前的目錄結構。建議在開發的時候使用這種模式,便于修改了文件的效果立刻顯現出來。
默認情況下,idea的modules和artifacts的output目錄已經設置好了,不需要更改,打成war包的時候會自動在WEB-INF目錄下生產classes目錄,然后把編譯后的文件放進去。
## 8.關于MVC && MVP && MVVM
* [三者之間的關系](http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html)
* [另一篇介紹](http://objccn.io/issue-13-1/)