目前沒有系統學習過 Spring 框架,參與工做時,直接參與到了 Spring Boot 項目的開發。目前還比較菜,因此,你要是和我同樣,不妨也跳過 Spring 框架的學習,直接學習 Sring Boot。html
官方文檔 的一段介紹:前端
Spring Boot makes it easy to create stand-alone, production-grade Spring-based Applications that you can run. We take an opinionated view of the Spring platform and third-party libraries, so that you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.java
You can use Spring Boot to create Java applications that can be started by using java -jar or more traditional war deployments. We also provide a command line tool that runs 「spring scripts」.web
大致意思是說,Spring Boot 能夠輕鬆建立能夠運行的獨立的,基於生產級 Spring 的應用程序。這個框架簡化了咱們 Spring 的配置。可使用 Spring Boot 建立 Java 應用,只須要使用 java -jar
或 war
包部署方式就能夠啓動。也內嵌了 Tomcat
,在開發時無需以 war
包也能夠運行應用。面試
下面是本文編寫時,我機器的環境:redis
本文目的是建立一個基本的 RESTful Web 服務。建立 Spring Boot 服務的方式主要有兩種:spring
Spring Initializr
建立,我我的比較傾向這種方式,方便快捷;下面主要介紹 IDEA 如何初始化一個 Sring Boot 項目:mongodb
1.File-New-Porject,選擇 Spring Initializr
,選擇 SDK 版本;docker
2.輸入項目的元數據信息,關係到項目的路徑、 pom
文件中項目的 Maven 座標( GAV
),;數據庫
3.選擇須要的 Maven 依賴,這裏 Spring Boot 版本,我選擇了 2.1.6
版本;
4.最後一步指定項目存放位置;
src/main/java
中有項目代碼文件,根目錄下是入口類: SpringBootHelloWorldApplication
類。 @SpringBootApplication
註解,這是整個 Spring Boot 的核心註解,它的目的就是開啓 Spring Boot 的自動配置。src/main/resources
下是配置文件: application.properties
src/test/
下的測試入口:Chapter1ApplicationTests一般在項目中對外提供的 API 都會放在叫作 Controller
的包下。
這裏向你們推薦一個測試交流圈q裙:790047143。
咱們建立一個 Controller
的包,並添加一個叫作 HelloWorld
的類:
@RestController public class HelloWorld { @GetMapping("/hello") public String sayHello() { return "Hello World"; } }
@RestController
註解加在這個類上,使之變爲一個 Controller
這是咱們啓動項目,即可以經過地址 localhost:8080/hello
或 127.0.0.1:8080/hello
看到 sayHello
函數執行的內容。
查看控制檯的輸出,咱們能夠知道 Spring Boot 項目啓動時,默認的端口是 8080
官方文檔中有關於 Profile 的描述。 Prorile
有 輪廓、外形、簡況
的含義,這裏我就把它理解爲「配置描述」好了。
在實際項目中,生產、beta 不一樣環境將採用不一樣的配置,好比數據庫配置等等。這時候,咱們只須要建立多分 Profile 文件便可。
除了 application.properties
文件,配置文件還能夠採用下面的命名規則 application-{profile}.properties
。Environment 中具備一組可選的值。若是沒有設置須要激活什麼配置文件,就默認激活 default
配置,即 application-default.properties
。
指定的配置文件都是從同一個位置被激活,即從標準的配置文件 application.properties
。
若是指定了多個配置文件,採起 last-win
策略,即「最後獲勝側率」。這句話意思是什麼呢,就是說,在你的 application.properties
中若是指定了激活好幾個配置文件,那麼,最後指定的那個配置文件纔會生效。
咱們分別建立兩個環境配置文件:
application-dev.properties
測試環境 server.port=8081
application-prod.properties
生產環境 #server.port=8082
applcation.properties
公共配置文件。激活 Dev 配置文件,須要在 application.properties
設置:
#這裏定義8080主要是爲了看端口設置是否會被 dev 覆蓋 server.port=8080 spring.profiles.active=dev
這時候啓動程序時,咱們查看控制檯就可看到 Dev
環境被激活了,應用端口是 8081
。這時候觀察 application.properties
的端口設置是否會會生效。通過測試能夠發現,此時 8080
端口被 Dev
的配置覆蓋了。
接着,咱們激活 Prod
配置,注意,此時我將 Prod
端口配置註釋掉了,這時候觀察 application.properties
的端口設置是否會會生效。通過測試能夠發現,此時 8080
端口生效了。
除了上面在 application.properties
指定激活的配置外,還能夠在 Envirionment 中設置相關環境變量激活:
通過測試,我在 Environment 中設置環境變量激活了 Dev
的配置,而後在 application.properties
激活的是 Prod
的配置,最終控制檯日誌顯示, Dev
配置被激活。
若是採用 mvn clean package
打出 jar
包,那麼可使用以下方式指定 Profile:
java -jar spring-boot-hello-world-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
咱們能夠在 Profile 中指定一些 propety
的值,在程序中能夠獲取到。
在 application-dev.properties
定義以下:
server.port=8081 author.name=Michael
接着,咱們在 Controller 類中使用 @Value
注,便可獲取到這個屬性:
@RestController public class HelloWorld { @Value(value = "${author.name}") private String authorName; @GetMapping("/hello") public String sayHello() { return "Hello World By " + authorName; } }
Banner 就是指咱們在啓動應用時控制檯一開始打印的那個內容,默認是打印 Spring Boot
。
src/main/resorces
下新建一個名爲 banner.txt
的內容;banner.txt
。個性化 Banner 來源:
送一個有趣的 Banner:
//////////////////////////////////////////////////////////////////// // _ooOoo_ // // o8888888o // // 88" . "88 // // (| ^_^ |) // // O\ = /O // // ____/`---'\____ // // .' \\| |// `. // // / \\||| : |||// \ // // / _||||| -:- |||||- \ // // | | \\\ - /// | | // // | \_| ''\---/'' | | // // \ .-\__ `-` ___/-. / // // ___`. .' /--.--\ `. . ___ // // ."" '< `.___\_<|>_/___.' >'"". // // | | : `- \`.;`\ _ /`;.`/ - ` : | | // // \ \ `-. \_ __\ /__ _/ .-` / / // // ========`-.____`-.___\_____/___.-`____.-'======== // // `=---=' // // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // // 佛祖保佑 永不宕機 永無BUG // ////////////////////////////////////////////////////////////////////
Spring Boot 提供了不少」開箱即用「的依賴模塊,都是以 spring-boot-starter-xx
做爲命名的。下面列舉一些經常使用的模塊:
當請求來了,controller 就會將相應的請求分發到相應的 service層,在 service 層中再調用 dao 層進行數據庫交互。這裏的 dao 層其實就是以前的 model 層,封裝了對數據庫的操做。這樣一來,就把業務處理邏輯從 controller 中分離出來,從而實現瞭解耦。
感謝您的觀看,若有不足之處,歡迎批評指正。
本次給你們推薦一個免費的學習羣,裏面歸納Java架構/分佈式/微服務/docker/高性能高併發以及面試資源等。對Java架構感興趣的程序猿,歡迎加入Q羣:790047143,無論你是剛入行得仍是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時天天更新視頻資料。 最後,祝你們早日學有所成。