1. 程式人生 > >SpringBoot快速入門(實戰篇一)

SpringBoot快速入門(實戰篇一)

# SpringBoot快速入門(一) ## 一SpringBoot簡介 ### 1.spring開發經歷的階段 Spring 誕生時是 Java 企業版(Java Enterprise Edition,JEE,也稱 J2EE)的輕量級代替品。無需開發重量級的 Enterprise JavaBean(EJB),Spring 為企業級Java 開發提供了一種相對簡單的方法,通過==依賴注入==和==面向切面程式設計==,用簡單的Java 物件(Plain Old Java Object,POJO)實現了 EJB 的功能。雖然 Spring 的元件程式碼是輕量級的,但它的配置卻是重量級的。 (IOC容器--控制反轉 AOP-面向切面程式設計) - 第一階段:xml配置:在Spring 1.x時代,使用Spring開發滿眼都是xml配置的Bean,隨著專案的擴大,我們需要把xml配置檔案放到不同的配置檔案裡,那時需要頻繁的在開發的類和配置檔案之間進行切換 - 第二階段:註解配置:在Spring 2.x 時代,隨著JDK1.5帶來的註解支援,Spring提供了宣告Bean的註解(例如@Component、@Service),大大減少了配置量。 - 第三階段:java配置管理 :Annotation的出現是為了簡化Spring的XML配置檔案,但Annotation不如XML強大,所以無法完全取代XMl檔案 。例如:@Configuration、@Import等。 所有這些配置都代表了開發時間的損耗。 因為在思考 Spring 特性配置和解決業務問題之間需要進行思維切換,**所以寫配置擠佔了寫應用程式邏輯的時間**。除此之外,**專案的依賴管理也是件吃力不討好的事情**。決定專案裡要用哪些庫就已經夠讓人頭痛的了,你還要知道這些庫的哪個版本和其他庫不會有衝突,這難題實在太棘手。並且,依賴管理也是一種損耗,新增依賴不是寫應用程式程式碼。一旦選錯了依賴的版本,隨之而來的不相容問題毫無疑問會是生產力殺手。 **Spring Boot 讓這一切成為了過去。** - **起步依賴**--pom:本質是Maven專案物件模型中的標籤。它定義其SpringBoot對他庫的傳遞依賴,依賴加在一起即可支援某項功能。最厲害的就是這個,使得SpringBoot具備了構建一切的能力:整合所有牛×框架 - **自動配置**--全部的配置檔案:基於約定優於配置思想,配置基本都可以走預設值。配置基本都是SpringBoot自動完成 ### 2. springboot簡介 **需要注意的是:springboot是一項新的框架--不是一項新的語言和新的技術** Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。 mian Spring Boot 簡化了基於Spring的應用開發,只需要**“run”**就能建立一個獨立的、生產級別的Spring應用。Spring Boot為Spring平臺及第三方庫提供開箱即用的設定(提供預設設定),這樣我們就可以簡單的開始。多數Spring Boot應用只需要**很少**(額外)的Spring配置。我們可以使用SpringBoot建立java應用,並使用java –jar 啟動它,或者採用傳統的war部署方式。 說白了就是 Spring Boot 其實不是什麼新的框架,它預設配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。SpringBoot不是對Spring功能的增強,而是提供一種快速使用Spring的開發方式(全新的開發方式)。 ![](https://lmhc.blog/attachment/20201212/247edd8a277545a79a821584f89ba6a6.png) ## 二 SpringBoot快速入門 ### 2.1 springboot的好處 **簡單,快速,方便** #### 用springmvc搭建一個SpringWeb專案則需要以下步驟 - 建立maven工程 - 匯入相關依賴的jar包 - 編寫springmvc核心配置檔案 - 編寫web.xml檔案 - 編寫XxxController 看似不是很麻煩,但是如果說這個專案僅僅做一個很簡功能,比如說只是發一個郵件,那麼每次都要這麼來一遍。 但是如果用SpringBoot實現呢? 很簡單隻需要用Spring initializr方式建立一個springboot工程配置檔案, 使用SpringBoot只需要關注業務邏輯,而不用關注框架! #### 2.2 Spring initializr方式搭建SpringBoot工程 1.通過idea工具建立工程時,不要選擇maven而是要選擇spring initializr。然後去勾選相關依賴。 ![](https://lmhc.blog/attachment/20201119/3965ea94850d455bb00c42b7ab404762_44368406.png) ![](https://lmhc.blog/attachment/20201212/65ef10f6336d45659224a1ac63ada5b6.png) ![](https://lmhc.blog/attachment/20201212/f41f64b8c27b42afa5929a8a9c1fe230.png) ![](https://lmhc.blog/attachment/20201212/c56f1df109b542a59c22af24cdcc9657.png) + 編寫controller ~~~java @RestController public class HelloController { /** * 請求/hello輸出hello springboot! * @return */ @GetMapping(value = "/hello") public String hello(){ return "hello springboot! "; } } ~~~ + 測試 ![](https://lmhc.blog/attachment/20201119/d80c4747eebb4e3896f2fdd97dbe8d43_44368406.png) 訪問:http://locahost:8080/hello ![](https://lmhc.blog/attachment/20201119/370b18ddcc1d455b9af4eaa8eb4fac3e_44368406.png) **在這個工程中我沒有啟動tomcat,其實這臺電腦就沒有裝tomcat,但是卻可以正常訪問localhost:8080,這是SpingBoot以及幫我們整合好的,同時配置檔案也是空的!** ## 三 SpringBoot原理分析 #### 1 SpringBoot-起步依賴 我們可以開啟pom.xml中的parent,並檢視`spring-boot-starter-parent`資訊。 ![](https://lmhc.blog/attachment/20201119/86506494b0594f9caaf8cba0bfe250a9_44368406.png) 從上面的`spring-boot-dependencies`的pom.xml中可以看出,座標的版本,依賴管理,外掛管理已經預先定義好了。SpringBoot工程繼承Spring-boot-starter-parent後,已經鎖定了版本等配置。起步依賴的作用是進行依賴傳遞 。用啥取啥,隨用隨取即可。我們開發中徹底不用關心:jar包的版本、依賴等問題了,大大降低版本衝突,版本過期,更新一個jar一下就需要升級一個tree的jar包。 相當於我們之前學習的過程中建立的父工程,在之前建立的父工程中,其中一個功能是用來統一管理jar包。這裡的父工程其實作用是一樣的。 **parent的版本和jar包管理,2.以及座標引入利用maven的依賴傳遞的性質,共同實現了起步依賴** #### 2 SpringBoot-自動配置 (1)@SpringBootApplication 該註解是一個組合註解,包括如下註解 ![![](https://lmhc.blog/attachment/20201119/afdd5e810ade4e9d920d7f568b29c831_44368406.png)](assets\1563054785549_44368406.png) - @SpringBootConfiguration:與之前@Configuration註解一樣,宣告為一個配置類 - @ComponentScan:spring IoC容器的掃描包,預設掃描載入程式下的包以及子包,如果我們寫的程式不在該包範圍內,可以通過該註解指定。 - @EnableAutoConfiguration:springboot實現自動化配置的核心註解。 (2)@SpringBootConfiguration ![](https://lmhc.blog/attachment/20201119/ce8c58378c31499286e914a6e82a9fd2_44368406.png) 通過這段我們可以看出,在這個註解上面,又有一個`@Configuration`註解。通過上面的註釋閱讀我們知道:這個註解的作用就是聲明當前類是一個配置類,然後Spring會自動掃描到添加了`@Configuration`的類,並且讀取其中的配置資訊。而`@SpringBootConfiguration`是來聲明當前類是SpringBoot應用的配置類,專案中只能有一個。所以一般我們無需自己新增。 (3)@EnableAutoConfiguration `@EnableAutoConfiguration`告訴Spring Boot基於你所新增的依賴,去“猜測”你想要如何配置Spring。比如我們引入了`spring-boot-starter-web`,而這個啟動器中幫我們添加了`tomcat`、`SpringMVC`的依賴。此時自動配置就知道你是要開發一個web應用,所以就幫你完成了web及SpringMVC的預設配置了! 自動配置:自己一般不用修改配置,預設的配置都給配好了。 ![](https://lmhc.blog/attachment/20201119/1cc2da7f230847428558381995fc0acd_44368406.png) ## 四 SpringBoot配置檔案使用 #### 1 application.properties (1) 語法 - 格式:key=value - 如果是修改SpringBoot中的預設配置,那麼key則不能任意編寫,必須參考SpringBoot官方文件。 - application.properties官方文件: