在使用了一段時間的springboot之后,今天決定開始弄一套完整的springboot的教程,說實話在學(xué)習(xí)springboot之前,個人已經(jīng)開始厭倦了代碼的編寫和視頻教程的錄制,因為每次錄制視頻教程那怕一個簡單的hello world都不得不面對大量的配置文件,一個helloworld測試程序,業(yè)務(wù)邏輯只是幾秒鐘的事情,但是卻要花上十多分鐘來進(jìn)行配置。現(xiàn)在有了springboot之后,一切都變得簡單了,這部分我們會使用幾種方式讓大家看到springboot是如何讓一個項目變得如此簡單的。
在開始學(xué)習(xí)springboot之前,這里依然有一些話需要提前給大家說一下,前段時間一個好朋友給我完整的講解了springboot,在整個交流的過程中,我們不斷重復(fù)的一句話是這個功能我們也實現(xiàn)過,那個功能我們也封裝過,沒錯,在原來進(jìn)行項目開發(fā)的過程中為了重用很多東西都是我們?yōu)榱朔奖惴庋b過的,但這些封裝在每次開發(fā)過程中都會讓人有不盡人意的感覺,如今我們總算有機(jī)會體驗一下世界頂級的公司為我們封裝的框架了。我相信你只要使用了springboot之后,你就會感覺到站在巨人的肩膀上向前走是多么幸福的一件事情。但是這里依然要強(qiáng)調(diào)一件事,在學(xué)習(xí)springboot之前,必須把原有的spring的一套原理(AOP和IOC)和MVC架構(gòu)學(xué)習(xí)透徹,因為springboot已經(jīng)把最底層的東西全部實現(xiàn)了,此時如果你對剛才提及的原理不清楚的話,在使用過程中遇到問題你將會束手無策,springboot不是我們走捷徑的工具,而是在掌握原理之后幫助我們快速開發(fā)的利器。如果對這些知識點有疑問的朋友,可以下載我原來錄制的教程(MVC等設(shè)計模式講解,由于目前百度網(wǎng)盤已經(jīng)無法使用,可以通過網(wǎng)絡(luò)下載或者通過QQ[64831031]聯(lián)系我獲取這部分的教程。),該教程雖然有些老,但是原理都講清楚了,有興趣的朋友可以找來看看。
廢話不說了,這里我們開始正式進(jìn)入springboot的第一講的教程,我們先用相對復(fù)雜的方式搭建一個springboot的項目看看,目前STS和Intellij IDEA都能對支持springboot的開發(fā),我們這里使用后者,另外在機(jī)器上還得安裝好jdk,maven等工具,jdk我使用的版本是8,maven是3.3.9。
首先我們創(chuàng)建一個maven的項目,在這里就不再累贅介紹如何創(chuàng)建一個maven項目了,如果你連maven都不會,建議你先把maven學(xué)習(xí)了之后再來使用springboot。創(chuàng)建完成項目之后我們需要在pom.xml中加入如下的配置
<groupId>org.konghao</groupId>
<artifactId>hello-springboot</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
我們的配置就這么結(jié)束了,想想原來我們所做的事情吧,拷貝各種依賴,配置spring的xml,配置spring MVC的xml,配置web.xml,現(xiàn)在已經(jīng)由springboot幫助我們完成了,看一看我們的依賴包,springboot需要的依賴包都已經(jīng)加進(jìn)來了,而且我們都不需要為依賴加任何的版本信息,因為繼承了spring-boot-starter-parent,它已經(jīng)會自動幫助我們選擇最理想的版本。一切都變得簡單了。

接下來我們要創(chuàng)建一個class,注意這class必須在我們的groupId的包下(注意:也不能在任何子包下,springboot會從這個位置去找依賴。),我的groupId是org.konghao,所以我們創(chuàng)建的class的包名是org.konghao.DemoApplication

接著寫一個main方法
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
}
我們的項目就搭建完成了,注意需要在這個class上增加一個SpringBootApplication的Annotation,這說明該class是一個springboot的運(yùn)行程序。我們運(yùn)行一下這個class看看效果
...
s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (https)
2016-11-21 11:15:23.254 INFO 8420 --- [ main] org.konghao.example.DemoApplication : Started DemoApplication in 6.943 seconds (JVM running for 7.63)
項目已經(jīng)順利啟動了,而且還是通過web的方式啟動了,而且是在8080端口上,我們的一個項目就這樣配置完成了,有沒有發(fā)現(xiàn)是不是非常的簡單,在瀏覽器中訪問一下這個端口,我們看到如下一個錯誤的頁面。

這是因為我們沒有寫任何的視圖,接下來我們通過原有springmvc的知識寫一個HelloController
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by konghao on 2016/11/21.
*/
@RestController
public class HelloController {
@RequestMapping("hello")
public String hello() {
return "hello springboot";
}
}
這里我們和原有的SpringMVC的區(qū)別在于把@Controller換成了@RestController,因為如果使用@controller需要設(shè)置一個視圖,在springboot之中已經(jīng)不建議使用jsp了,而是使用thymeleaf,freemarker等模板引擎作為視圖,使用@RestController說明這個Controller中的所有的方法返回的是一個JSON的字符串,這樣我們就不需要指定專門的視圖了。再次運(yùn)行main函數(shù)。

springboot已經(jīng)正常工作了,整個流程變成非常的簡單,甚至不需要我們進(jìn)行任何多余的配置,接下來我們看更方便的一件事,我們首先在pom.xml中加入一個插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
我們使用maven打一下包,mvn package,此時我們會得到一個hello-springboot-xx.jar的包

把這個包拷貝到任意一個目錄中,在命令提示符中使用java -jar xxx.jar這個jar包看看效果

大家看不需要任何環(huán)境,web項目就啟動起來了,并且可以通過瀏覽器訪問了,我們甚至都沒有設(shè)置和容器相關(guān)的東西,因為springboot在這個jar文件中已經(jīng)把Tomcat集成進(jìn)去了,大家有沒有發(fā)現(xiàn)一切都變得如此的容易和簡單。
到這里我們第一部分的內(nèi)容差不多結(jié)束了,但是這里還要給大家講一個更方便的工具,如果你記不住springboot的文件夾結(jié)構(gòu)這些,spring提供一個SPRING INITIALIZR幫助我們快速搭建springboot的項目,SPRING INITIALIZR在STS中是天然集成的。在Intellij中需要收費(fèi)的版本才能使用,但是我們可以通過http://start.spring.io/可以直接訪問。

點擊Generate Project之后會得到一個hello的壓縮文件夾,解壓就可得到完整的springboot的目錄結(jié)構(gòu),我們的第一個Application和pom文件都已經(jīng)寫好了。

這就是我們第一次課的內(nèi)容,相信大家已經(jīng)看到了Springboot的強(qiáng)悍之處了。
本文源碼