[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/)