SpringBoot第一講概覽

在使用了一段時間的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)會自動幫助我們選擇最理想的版本。一切都變得簡單了。

springboot概覽
springboot概覽

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

springboot概覽
springboot概覽

接著寫一個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)是不是非常的簡單,在瀏覽器中訪問一下這個端口,我們看到如下一個錯誤的頁面。

springboot概覽
springboot概覽

這是因為我們沒有寫任何的視圖,接下來我們通過原有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概覽
springboot概覽

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的包

springboot概覽
springboot概覽

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

springboot概覽
springboot概覽

大家看不需要任何環(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/可以直接訪問。

springboot概覽
springboot概覽

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

springboot概覽
springboot概覽

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容