一起來學(xué)SpringBoot | 第一篇:構(gòu)建第一個(gè)SpringBoot工程

SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出一個(gè) WEB 工程

未接觸 SpringBoot 之前,搭建一個(gè)普通的 WEB 工程往往需要花費(fèi)30分鐘左右,如果遇到點(diǎn)奇葩的問題耽擱的時(shí)間會(huì)更長(zhǎng)一點(diǎn),但自從用了SpringBoot 后,真正體會(huì)到什么叫分分鐘搭建一個(gè)WEB,讓我擁有更多的時(shí)間跟我的小伙伴們嘮嗑了。使用 SpringBoot 后發(fā)現(xiàn)一切是如此的簡(jiǎn)單(還記得讀書那會(huì)被JAR包,xml支配的恐懼嗎,如今都可以說 good bye)

設(shè)計(jì)的目標(biāo)

為所有使用 Spring 的開發(fā)者提供一個(gè)更簡(jiǎn)單,快速的入門體驗(yàn)

提供一些常見的功能、如監(jiān)控、WEB容器,健康,安全等功能

干掉XML,遵循規(guī)范,開箱即用

前提

SpringBoot 為我們提供了一系列的依賴包,所以需要構(gòu)建工具的支持:MavenGradle。由于本人更習(xí)慣使用Maven所以后續(xù)案例都是基于Maven 與 IntelliJ IDEA,同時(shí)這里是基于最新的SpringBoot2編寫的哦...

創(chuàng)建項(xiàng)目

初次接觸,我們先來看看如何創(chuàng)建一個(gè)Spring Boot項(xiàng)目,這里以IntelliJ IDEA為例,其他的IDE工具小伙伴們自行搜索創(chuàng)建方式。創(chuàng)建完項(xiàng)目后,各位小伙伴請(qǐng)認(rèn)真、細(xì)心的對(duì)比下與傳統(tǒng)的WEB工程有何區(qū)別(如:目錄結(jié)構(gòu))。

點(diǎn)擊File -> Project

如果用過 Eclipse/IDEA 等工具的,對(duì)創(chuàng)建項(xiàng)目肯定不會(huì)陌生,但為了照顧第一次使用的我貼上了圖文

image

選擇Spring Initializr

到這一步選擇的時(shí)候,如圖中選項(xiàng)的是Spring Initializr(官方的構(gòu)建插件,需要聯(lián)網(wǎng)),第二個(gè)是自己選擇Maven構(gòu)建,為了更好的適合初學(xué)者,我們將在本章用插件構(gòu)建

image

填寫項(xiàng)目基本信息

Group: 組織ID,一般分為多個(gè)段,這里我只說兩段,第一段為域,第二段為公司名稱。域又分為 org、com、cn等等,其中 org為非營(yíng)利組織,com為商業(yè)組織。如阿里、淘寶(com.alibaba/com.taobao)

Artifact: 唯一標(biāo)識(shí)符,一般是項(xiàng)目名稱

image

選擇包

Spring Initializr 為我們提供了很多的選項(xiàng),不同的選項(xiàng)有不同的作用,在初期我們只需要依賴Web -> Web 就可以了,選擇好依賴包之后點(diǎn)擊Next -> Finish

image

目錄結(jié)構(gòu)

    - src
    -main
        -java
            -package
                #主函數(shù),啟動(dòng)類,運(yùn)行它如果運(yùn)行了 Tomcat、Jetty、Undertow 等容器
                -SpringbootApplication  
        -resouces
            #存放靜態(tài)資源 js/css/images 等
            - statics
            #存放 html 模板文件
            - templates
            #主要的配置文件,SpringBoot啟動(dòng)時(shí)候會(huì)自動(dòng)加載application.yml/application.properties      
            - application.yml
    #測(cè)試文件存放目錄       
    -test
 # pom.xml 文件是Maven構(gòu)建的基礎(chǔ),里面包含了我們所依賴JAR和Plugin的信息
- pom

初窺配置文件
從啟動(dòng)日志中可以發(fā)現(xiàn),SpringBoot 默認(rèn)的端口是 8080 ,那么如果端口被占用了怎么辦呢?不要慌,問題不大,配置文件分分鐘解決你的困擾…

2018-04-20 16:14:46.725  INFO 11184 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

修改默認(rèn)配置

# 默認(rèn)的 8080 我們將它改成 9090 
server.port=9090
# 未定義上下文路徑之前 地址是 http://localhost:8080 定義了后 http://localhost:9090 你能在tomcat做的事情,配置文件都可以
server.servlet.context-path=/springboot-test

在啟動(dòng)一次看看日志

2018-04-20 16:47:05.716  INFO 12108 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9090 (http) with context path '/springboot-test'

測(cè)試
本次測(cè)試采用 junit 進(jìn)行,當(dāng)然也可以啟動(dòng)項(xiàng)目后直接訪問 http://localhost:9090/springboot-test/demo1 進(jìn)行測(cè)試

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringRunner;

import java.net.URL;

import static org.junit.Assert.assertEquals;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SpringbootTestApplication{


    @LocalServerPort
    private int port;

    private URL base;

    @Autowired
    private TestRestTemplate template;

    @Before
    public void setUp() throws Exception {
        // TODO 因?yàn)槲覀冃薷牧?content-path 所以請(qǐng)求后面要帶上
        this.base = new URL("http://localhost:" + port + "/springboot-test/demo1");
    }

    @Test
    public void demo1() throws Exception {
        ResponseEntity<String> response = template.getForEntity(base.toString(), String.class);
        assertEquals(response.getBody(), "Hello world");
    }
}

拓展知識(shí)

自定義Banner

SpringBoot 啟動(dòng)的時(shí)候我們可以看到如下內(nèi)容,這一塊其實(shí)是可以自定義的哦,而且在 2.X 版本中,它支持的格式從文本擴(kuò)展到banner.txt、banner.jpg、banner.gif、banner.jpeg 等等,只需要在 resouces 目錄下添加指定命名的文件即可

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.2)

總結(jié)
目前很多大佬都寫過關(guān)于 SpringBoot 的教程了,如有雷同,請(qǐng)多多包涵,本教程基于最新的 spring-boot-starter-parent:v2.1.2編寫,包括新版本的特性都會(huì)一起介紹…

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

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

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