spring boot

一、前言

Spring Boot 是由 Pivotal 團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新 Spring 應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。

本系列以快速入門為主,可當(dāng)作工具小手冊閱讀

二、環(huán)境搭建

創(chuàng)建一個(gè) maven 工程,目錄結(jié)構(gòu)如下圖:

2.1 添加依賴

創(chuàng)建 maven 工程,在 pom.xml 文件中添加如下依賴:

org.springframework.bootspring-boot-starter-parent1.5.6.RELEASEUTF-8UTF-81.8org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-maven-plugin

2.2 創(chuàng)建目錄和配置文件

創(chuàng)建 src/main/resources 源文件目錄,并在該目錄下創(chuàng)建 application.properties 文件、static 和 templates 的文件夾。

application.properties:用于配置項(xiàng)目運(yùn)行所需的配置數(shù)據(jù)。

static:用于存放靜態(tài)資源,如:css、js、圖片等。

templates:用于存放模板文件。

目錄結(jié)構(gòu)如下:

2.3 創(chuàng)建啟動(dòng)類

在 com.light.springboot 包下創(chuàng)建啟動(dòng)類,如下:

/** 該注解指定項(xiàng)目為springboot,由此類當(dāng)作程序入口 自動(dòng)裝配 web 依賴的環(huán)境 **/@SpringBootApplicationpublicclassSpringbootApplication{public static void main(String[] args){? ? ? ? SpringApplication.run(SpringbootApplication.class, args);? ? }}

2.4 案例演示

創(chuàng)建 com.light.springboot.controller 包,在該包下創(chuàng)建一個(gè) Controller 類,如下:

@RestControllerpublicclassTestController{@GetMapping("/helloworld")public String helloworld(){return"helloworld";? ? }}

在 SpringbootApplication 文件中右鍵 Run as -> Java Application。當(dāng)看到 “Tomcat started on port(s): 8080 (http)” 字樣說明啟動(dòng)成功。

打開瀏覽器訪問?http://localhost:8080/helloworld,結(jié)果如下:

讀者可以使用 STS 開發(fā)工具,里邊集成了插件,可以直接創(chuàng)建 Spingboot 項(xiàng)目,它會(huì)自動(dòng)生成必要的目錄結(jié)構(gòu)。

三、熱部署

當(dāng)我們修改文件和創(chuàng)建文件時(shí),都需要重新啟動(dòng)項(xiàng)目。這樣頻繁的操作很浪費(fèi)時(shí)間,配置熱部署可以讓項(xiàng)目自動(dòng)加載變化的文件,省去的手動(dòng)操作。

在 pom.xml 文件中添加如下配置:

org.springframework.bootspring-boot-devtoolstruetrue

org.springframework.bootspring-boot-maven-plugintrue

配置好 pom.xml 文件后,我們啟動(dòng)項(xiàng)目,隨便創(chuàng)建/修改一個(gè)文件并保存,會(huì)發(fā)現(xiàn)控制臺(tái)打印 springboot 重新加載文件的信息。

演示圖如下:

四、多環(huán)境切換

application.properties 是 springboot 在運(yùn)行中所需要的配置信息。

當(dāng)我們在開發(fā)階段,使用自己的機(jī)器開發(fā),測試的時(shí)候需要用的測試服務(wù)器測試,上線時(shí)使用正式環(huán)境的服務(wù)器。

這三種環(huán)境需要的配置信息都不一樣,當(dāng)我們切換環(huán)境運(yùn)行項(xiàng)目時(shí),需要手動(dòng)的修改多出配置信息,非常容易出錯(cuò)。

為了解決上述問題,springboot 提供多環(huán)境配置的機(jī)制,讓開發(fā)者非常容易的根據(jù)需求而切換不同的配置環(huán)境。

在 src/main/resources 目錄下創(chuàng)建三個(gè)配置文件:

application-dev.properties:用于開發(fā)環(huán)境application-test.properties:用于測試環(huán)境application-prod.properties:用于生產(chǎn)環(huán)境

我們可以在這個(gè)三個(gè)配置文件中設(shè)置不同的信息,application.properties 配置公共的信息。

在 application.properties 中配置:

spring.profiles.active=dev

表示激活 application-dev.properties 文件配置, springboot 會(huì)加載使用 application.properties 和 application-dev.properties 配置文件的信息。

同理,可將 spring.profiles.active 的值修改成 test 或 prod 達(dá)到切換環(huán)境的目的。

演示圖如下:

五、配置日志

5.1 配置 logback(官方推薦使用)

5.1.1 配置日志文件

spring boot 默認(rèn)會(huì)加載 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。

如需要自定義文件名稱,在 application.properties 中配置 logging.config 選項(xiàng)即可。

在 src/main/resources 下創(chuàng)建 logback-spring.xml 文件,內(nèi)容如下:

${PATTERN}${TEST_FILE_PATH}${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log100${PATTERN}${PRO_FILE_PATH}${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log100${PATTERN}

其中,springProfile 標(biāo)簽的 name 屬性對應(yīng) application.properties 中的 spring.profiles.active 的配置。

即 spring.profiles.active 的值可以看作是日志配置文件中對應(yīng)的 springProfile 是否生效的開關(guān)。

5.2 配置 log4j2

5.2.1 添加依賴

org.springframework.bootspring-boot-starter-log4j2

5.2.2 配置日志文件

spring boot 默認(rèn)會(huì)加載 classpath:log4j2.xml 或者 classpath:log4j2-spring.xml。

如需要自定義文件名稱,在 application.properties 中配置 logging.config 選項(xiàng)即可。

log4j2.xml 文件內(nèi)容如下:

%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n

log4j2 不能像 logback 那樣在一個(gè)文件中設(shè)置多個(gè)環(huán)境的配置數(shù)據(jù),只能命名 3 個(gè)不同名的日志文件,分別在 application-dev,application-test 和 application-prod 中配置 logging.config 選項(xiàng)。

除了在日志配置文件中設(shè)置參數(shù)之外,還可以在 application-*.properties 中設(shè)置,日志相關(guān)的配置:

logging.config# 日志配置文件路徑,如 classpath:logback-spring.xmllogging.exception-conversion-word# 記錄異常時(shí)使用的轉(zhuǎn)換詞logging.file# 記錄日志的文件名稱,如:test.loglogging.level.*# 日志映射,如:logging.level.root=WARN,logging.level.org.springframework.web=DEBUGlogging.path# 記錄日志的文件路徑,如:d:/logging.pattern.console# 向控制臺(tái)輸出的日志格式,只支持默認(rèn)的 logback 設(shè)置。logging.pattern.file# 向記錄日志文件輸出的日志格式,只支持默認(rèn)的 logback 設(shè)置。logging.pattern.level# 用于呈現(xiàn)日志級(jí)別的格式,只支持默認(rèn)的 logback 設(shè)置。logging.register-shutdown-hook# 初始化時(shí)為日志系統(tǒng)注冊一個(gè)關(guān)閉鉤子

六、打包運(yùn)行

打包的形式有兩種:jar 和 war。

6.1 打包成可執(zhí)行的 jar 包

默認(rèn)情況下,通過 maven 執(zhí)行 package 命令后,會(huì)生成 jar 包,且該 jar 包會(huì)內(nèi)置了 tomcat 容器,因此我們可以通過 java -jar 就可以運(yùn)行項(xiàng)目,如下圖:

6.2 打包成部署的 war 包

讓 SpringbootApplication 類繼承 SpringBootServletInitializer 并重寫 configure 方法,如下:

@SpringBootApplicationpublicclassSpringbootApplicationextendsSpringBootServletInitializer{@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application){returnapplication.sources(SpringbootApplication.class);? ? }public static void main(String[] args){? ? ? ? SpringApplication.run(SpringbootApplication.class, args);? ? }}

修改 pom.xml 文件,將 jar 改成 war,如下:

war

打包成功后,將 war 包部署到 tomcat 容器中運(yùn)行即可。

七、參考資料

https://docs.spring.io/spring-boot/docs/1.5.8.RELEASE/reference/html/?官方文檔

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

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

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