手寫springboot_Spring Boot 入門教程 | 圖文講解

fa603c8158cd2a70b082969ce3608d9a.png

目錄

一、Spring Boot 是什么

二、為什么要使用 Spring Boot

三、快速入門

  • 3.1 創建 Spring Boot 項目
  • 3.2 項目結構
  • 3.3 引入 Web 依賴
  • 3.4 編寫第一個接口
  • 3.5 啟動程序,驗證效果

四、總結

五、GitHub 示例代碼

一、Spring Boot 是什么

以下截圖自 Spring Boot 官方文檔:

8a63c9dbbc119fc874078bc6f39e4dee.png

翻譯整理一下,內容如下:

Spring Boot 是基于 Spring 框架基礎上推出的一個全新的框架, 旨在讓開發者可以輕松地創建一個可獨立運行的,生產級別的應用程序。

基于 Spring Boot 內部的自動化配置功能,開發者可以在"零"配置, 或者只需要添加很少的配置,就可以進行日常的功能開發。

二、為什么要使用 Spring Boot

用權威說話,下圖同樣截圖自 Spring Boot 官方文檔:

f181d237848e43368d18354316b60101.png

我們再來翻譯整理一下,內容如下:


  • 1、能夠輕松、方便地創建一個 Spring 應用;
  • 2、直接使用內嵌的 Tomcat, Jetty, Undertow 容器(無需再手動安裝容器,通過部署 WAR 包的方式);
  • 3、內部自動管理各種 Jar 包的版本依賴關系,再也不用為版本沖突而煩惱啦;
  • 4、自動化配置 Spring 相關功能,以及第三方庫;
  • 5、提供諸如指標,健康檢查, 外部化配置等功能;
  • 6、"零配置",再也不需要手寫地獄般的 XML 配置了;

怎么樣,看了 Spring Boot 這些強大的特性以后,是不是開始躍躍欲試了,接下來,讓我們快速入門 Spring Boot 吧 !

PS: 正由于 Spring Boot 以上特性,才得以使它成為構建微服務架構的基礎組件。

三、快速入門

3.1 創建 Spring Boot 項目

3.1.1 通過 Spring Initializr 來創建

  • 1、訪問 Spring Initializr 地址:https://start.spring.io:
a756d6939a1ab08840a38f1d9f716447.png

默認情況下,Spring Initializr 生成的項目是通過 Maven 來構建的,開發語言為 Java, 版本用的最新的發行版,打包方式為 Jar, 使用的 Java 版本為 1.8,小伙伴們這里要注意一下!

  • 2、生成項目, 導入到開發工具中

點擊 GenerateProject 按鈕,下載的 Demo.zip, 解壓后,導入到開發工具中,這里筆者使用的是 IntelliJ IDEA。

  • 3、File -> New -> Model from Existing Source, 可參考下圖:
e1f4a23b055c2de40f47e4520d1047ca.png
  • 4、彈出框中,選中您的解壓后的文件夾 -> OK -> 選擇通過 Maven 的方式來導入項目:
db0f71848b198f9d816c053fbcf3fac7.png
  • 5、一路點擊 Next -> Finished;

至此,通過 Spring Initializr 網站來創建應用,并導入到了我們的開發工具 IntelliJ IDEA 中就成功了。

PS: 如果您使用的是 Eclipse, 方式是 Import -> Existing Maven Projects -> Next -> 選擇解壓后的文件夾 -> Finsh

3.1.2 通過 IntelliJ IDEA 來創建應用

其實,我們還可以直接通過 IntelliJ IDEA 來創建一個 Spring Boot 項目,因為 IntelliJ IDEA 內置了 Spring Initializr,接下來,通過圖文,讓我們來看下要如何一步一步操作:

  • 1、File -> New -> Project, 跳出新建項目彈出框:
ba30d3c680102b060418489595c3c356.png
  • 2、點擊 Next,彈出填寫 maven 項目的需要的相關信息,這里我們用默認的就好了,繼續點擊 Next;
  • 3、再次彈出框,這里可以勾選開發中需要的 Starter 的組件, 如 Web, Redis 等,我們這里暫時不勾,后面通過手動添加的方式, 繼續點擊 Next -> Finish;

3.2 項目結構

項目創建成功后,可以看到結構如下:

b98f385b086640fa9f7fa1715604e1e2.png

共分為三個主要的文件夾:

  • src/mail/java: 存放 Java 源碼,包括啟動程序的入口;
  • src/mail/resources: 資源目錄,用于放置相關配置文件,靜態文件 html, css 等;
  • src/test/java: 存放單元測試類

3.3 引入 Web 依賴

在 pom.xml 文件中添加 web 依賴:

org.springframework.boot spring-boot-starter-web

PS: 不用手動去指定版本號,因為 Spring Boot 內部已經維護相關 Jar 包的依賴關系。

3.4 編寫第一個接口

在 com.example.demo 包下添加 controller 包,用來存放所有對外部開發的接口, 完成后,創建 HelloController.java 類, 添加一個 /hello 接口:

@RestControllerpublic class HelloController { @GetMapping("/hello") public String hello() { return "Hello, Spring Boot !"; }}

添加 @RestController 注解,表示此類中所有定義的接口均為 RESTFul 風格,也就是說返參均為 JSON 格式的。

@GetMapping("/hello") 表示定義一個 GET 請求的接口,路徑為 /hello。

3.5 啟動程序,驗證效果

69fdfa7b2dc772d86dbe98981cd00620.png

根據圖示,點擊按鈕,來啟動 Spring Boot Web 程序, 查看控制臺輸出:

 . ____ _ __ _ _ / / ___'_ __ _ _(_)_ __ __ _    ( ( )___ | '_ | '_| | '_ / _` |     / ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |___, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.4.RELEASE)2019-04-14 19:57:59.795 INFO 3680 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication on 192.168.0.100 with PID 3680 (/Users/a123123/Work/IdeaProjects/demo/target/classes started by allen-jiang in /Users/a123123/Work/IdeaProjects/demo)2019-04-14 19:57:59.798 INFO 3680 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default2019-04-14 19:58:00.666 INFO 3680 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2019-04-14 19:58:00.689 INFO 3680 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2019-04-14 19:58:00.689 INFO 3680 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.17]2019-04-14 19:58:00.756 INFO 3680 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2019-04-14 19:58:00.757 INFO 3680 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 920 ms2019-04-14 19:58:00.978 INFO 3680 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'2019-04-14 19:58:01.183 INFO 3680 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2019-04-14 19:58:01.186 INFO 3680 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 1.678 seconds (JVM running for 2.176)

當控制臺日志中輸出了 Tomcatstarted on port(s):8080(http)withcontext path''時,表示內嵌的 Tomcat 容器已經啟動成功了,端口為 8080 !

接下來,我們在瀏覽器上訪問 http://localhost:8080/hello 接口,驗證一下,接口是否能夠正常訪問:

4c8bf65d9ac63294791bb45ba557d6b9.png

返回了我們想要的 Hello,SpringBoot! 字符串,接口訪問正常,大工告成!

四、總結

本文中,我們首先了解了什么是 Spring Boot, 以及Spring Boot 的相關特性,最后我們手把手學習了如何搭建一個 Spring Boot 項目,并編寫了第一個接口且訪問成功。

通過實際操作,真切地感受到了 Spring Boot 的魅力所在!老鐵,雙擊 666!

贈送 | 面試&學習福利資源

最近在網上發現一個不錯的 PDF 資源《Java 核心面試知識.pdf》分享給大家,不光是面試,學習,你都值得擁有!!!

獲取方式: 關注公眾號: 小哈學Java, 后臺回復 資源,既可獲取資源鏈接,下面是目錄以及部分截圖:

424fd58e676dd50d5b6ac9c2bd128d71.png
98a2fd74fb2c9e40dc909b6cc15c75c2.png
8bafc222006aff4ef7e84cb1a81e687d.png
8944fed8f910f8918e61325ae04e882c.png
1ddc19661b40580ad7e05faa973c3f33.png
6a9b54024a63528fc7d950ce4c2b75b9.png
2551f810c6f55766139dffaee5f6b35c.png

重要的事情說兩遍,獲取方式: 關注公眾號: 小哈學Java, 后臺回復 資源,既可獲取資源鏈接 !!!

歡迎關注微信公眾號: 小哈學Java

c8a615cea1d258d963928de76ec1dde3.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455032.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455032.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455032.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

lunix 安裝python3

Linux下默認系統自帶python2.6的版本,這個版本被系統很多程序所依賴,所以不建議刪除,如果使用最新的Python3那么我們知道編譯安裝源碼包和系統默認包之間是沒有任何影響的,所以可以安裝python3和python2共存 首先去python官網下載…

手機音視頻應用開發(專注于Symbian、iPhone、Android等跨平臺音視頻應用開發方案)

一款好的手機應用, 能讓用戶在第一分鐘就愛上他, 一款爛的手機應用, 能讓用戶在第一分鐘就要卸載它。 好的應用必須的穩定、快速。市場日益激勵,一個項目的周期是一個漫長的過程,投入的時間、精力、費用。一筆龐大的預…

Colemak布局的實現 Window+Linux+Android

Colemak布局的實現 WindowLinuxAndroid title: ‘Colemak布局的實現’ subtitle: ‘一個極客的鍵盤布局’ tags: entertainment solution 前言 大部分同學使用的鍵盤布局都是QWERTY布局 而科學研究表明,可能這個設計不是最高效率的布局,甚至的有意為了降低打字的效率而研究的…

機器學習之樸素貝葉斯法

轉載請注明出處:http://www.cnblogs.com/Peyton-Li/ 樸素貝葉斯法是機器學習模型中一個比較簡單的模型,實現簡單,比較常用。 是定義在輸入空間上的隨機向量,是定義在輸出空間上的隨機變量。是和的聯合概率分布。訓練數據集由獨立同…

如何讓梯形變成平行四邊形_開放的課堂 創新的天地——平行四邊形的面積教學片段與反思...

一、 課題的確定學生在三年級學過長方形、正方形的面積計算,經歷過從數方格的辦法得出面積計算公式的過程。因此,學生對于面積計算公式的推導有一定的經驗和知識基礎。基于上述考慮,我想完全放手讓學生去研究如何計算平行四邊形的面積。這對學…

bzoj1670【Usaco2006 Oct】Building the Moat 護城河的挖掘

1670: [Usaco2006 Oct]Building the Moat護城河的挖掘 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 387 Solved: 288[Submit][Status][Discuss]Description 為了防止口渴的食蟻獸進入他的農場,Farmer John決定在他的農場周圍挖一條護城河。農場里一共同擁有N(8…

音視頻編解碼的一些源代碼

音視頻編解碼的一些源代碼 (轉)資料名稱:音視頻編解碼的一些源代碼 資料成文時間:不詳 語言:英文 頁數:很多 何人所著(來源): 文件格式:原代碼 開發工具:vc 說…

Vue之組件之間的數據傳遞

Vue的組件作用域都是孤立的,不允許在子組件的模板內直接引用父組件的數據,必須使用特定的方法才能實現組件之間的數據傳遞。 下列為在vue-cli創建項目中的操作 一父組件向子組件傳遞數據 在Vue中,用props向子組件傳遞數據。 子組件部分&#…

偶然發現一個大佬寫的 React 腳手架,叫Moderate, 用起來很方便

發現一個大佬寫的 React 腳手架,叫Moderate, 用起來很方便 Moderate,意思為適中的,適度的,用這個作為代號,主要取決于他的本名“中用”,其一以貫之的想法就是中庸,秉承著以人為本的態度&#xf…

案例 自動辦公_1300張辦公系列前臺參考圖,請您查收!

設計情報局室內設計師的靈感聚集地關注一個有格調的空間必定有一處高顏值的前臺漂亮的前臺很重要...是空間給人的第一印象一個獨一無二的前臺設計還可以提升整個空間的氣質與逼格連個漂亮的前臺都沒有作為顏控界扛把子的設計師們還怎么混?SO今天小編給大家帶來一份《…

iframe里面的元素觸發父窗口元素事件的jquery代碼 轉

例如父窗口定義了一個事件。 top: $(dom1).bind(topEvent, function(){}); 那么iframe里面的元素怎樣觸發父窗口dom1的事件呢?這樣嗎? $(dom1, parent.document).trigger(topEvent); 看似正確,實則誤導人。 因為父窗口的jquery對象與iframe里…

mplayer 所支持的音視頻編解碼

這里我把mplayer 所支持的音視頻編解碼都羅列出來,方便大家查閱;-----------------------------------------------------------------------------------------------Video codecs:Working video codecscodec namefourcccodecfileoutcommentsFFmpeg Zip…

使用ifconfig取出網卡eth0的ip地址

方法1:sed命令12[rootoldboyedu ~]# ifconfig eth0 |sed -n 2p |seds#^.*addr:##g|sed s# B.*$##g10.0.0.50方法2:cut12[rootoldboyedu ~]# ifconfig eth0|grep inetaddr|cut -d ":" -f2|cut -d " " -f110.0.0.50方法3:…

目標檢測_目標檢測 | Anchor free的目標檢測進階版本

今天說的是《Soft Anchor-Point Object Detection》,其也是最近關于anchor free的目標檢測的論文,作者來自于CMU,一作同樣也是FSAF(2019 CVPR)的作者。該論文的出發點還是在樣本選擇和FPN特征選擇層面。背景Anchor free是目標檢測領域的一個研…

Colly實現豆瓣電影Top250爬取

使用 Colly 實現 豆瓣電影Top250爬取 package mainimport ("encoding/csv""github.com/PuerkitoBio/goquery""github.com/gocolly/colly""log""os""strings""time" )type Movie struct {idx string…

homework1

一.什么是RUP?二.什么是XP?三.什么是敏捷過程? 一。什么是RUP?RUP是一種完整而且完美的軟件過程 1。最佳實踐 (1)迭代式開發 (2)管理需求 (3)使用基于構件軟件的體系結構 (4&…

編程:休息片刻的好處

原文作者 Axel Rauschmayer 是一位居住在德國慕尼黑的自由軟件工程師。他在這篇博文列舉了在編程期間休息片刻的一些好處。 你會更精明而不是更賣力地工作。我曾經為了一個功能的實現而賣力工作過。每天12小時,整整工作了兩個星期。我付出了很多努力。那兩個星期之…

五個溫度帶的分界線_女神建筑師在拿破侖故鄉打造的海景別墅,超美!超有溫度!【環球設計2225期】...

生活的溫度 法國建筑師阿米莉亞塔維拉(Amelia Tavella)一直對設計充滿熱情,她出生在阿雅克肖市,在巴黎的建筑學院學習建筑專業,如今她居住普羅旺斯地區的艾克斯。她說:“設計讓我涉足很多有趣的領域并能充分發揮我的想象力。這是一…

1118. Birds in Forest (25)

并查集。。。要用路徑壓縮&#xff0c;不然會超時&#xff0c; #include<iostream> #include<string> #include<map> #include<vector> #include<algorithm> #include<queue> #include<set> #include<stack> using namespace …

Java線程池有哪些作用

線程池 線程池的作用 核心點:復用機制提前創建好固定的線程一直在運行狀態實現復用限制線程創建數量。 1.降低資源消耗:通過池化技術重復利用已創建的線程&#xff0c;降低線程創建和銷毀造成的損耗。 2.提高響應速度:任務到達時&#xff0c;無需等待線程創建即可立即執行。…