第1章 SpringBoot概要 & 快速入門
1.1 SpringBoot 介紹
隨着動態語言的流行(Ruby、Scala、Node.js), Java的開發顯得格外的笨重;繁多的配置、低下的開發效
率、複雜的部署流程以及第三方技術整合難度大。
在上述環境下,Spring Boot由此誕生,它的設計是爲了使您能夠儘可能快地啓動和運行。它使用 “習慣優於
配置” (項目中存在大量的配置,而 Spring Boot 內置一個習慣性的配置,讓你無須手動進行配置)的理念讓
你的項目快速運行起來。使用 Spring Boot 很容易創建一個獨立運行(運行jar,內嵌 Servlet 容器)、準生產
強力的基於 Spring 框架的項目,使用 Spring Boot你可以不用或者只需要很少的 Spring 配置。提供了 J2EE
開發的一站式解決方案。
1.2 Spring Boot 優點
快速構建獨立運行的Spring項目;
無須依賴外部Servlet容器,應用無需打成WAR包;項目可以打成jar包獨自運行;
提供 一系列 starter pom 來簡化 Maven 的依賴加載;
大量的自動配置,對主流開發框架的無配置集成;
無須配置XML,開箱即用,簡化開發,同時也可以修改默認值來滿足特定的需求;
Spring Boot 並不是對 Spring 功能上的增強,而是提供了一種快速使用 Spring 的方式;
極大提高了開發、部署效率。
1.3 Spring Boot 入門開發
技術點要求:
熟練 Spring 框架的使用
熟練 Maven 依賴管理與項目構建
熟練使用 Eclipse 或 IDEA
1.3.1 環境要求
jdk1.8 (Spring Boot 推薦jdk1.8及以上): java version "1.8.0_151"
Maven 3.x (maven 3.2 以上版本):Apache Maven 3.3.9
IntelliJ IDEA :IntelliJ IDEA 2018.2.2 x64
SpringBoot 使用當前最新穩定版本:第4章web開發前 2.0.6.RELEASE ,後面使用 2.1.0.RELEASE
1.3.2 修改Maven配置文件
在 Maven 安裝目錄下的 settings.xml 配置文件中, 添加如下配置
1.3.3 IntelliJ IDEA 設置
1.3.4 快速構建 Spring Boot 項目
需求:瀏覽器發送 /hello 請求,服務器接受請求並處理,響應 Hello World 字符串
分析 :構建 Spring Boot 項目,事實上建立的就是一個 Maven 項目
1)創建 Maven工程
在 IDEA上新建一個空的jar類型 的 maven 工程
2)修改 pom.xml
在 pom.xml 中添加 Spring Boot 相關的父級依賴, spring-boot-starter-parent 是一個特殊的starter,
它提供了項目相關的默認依賴,使用它之後 ,常用的包依賴可以省去 version 標籤。
我們會驚奇地發現,我們的工程自動添加了好多好多jar包, 這些 jar包正是開發時需要導入的jar包
3) 創建控制器 Controller
4)創建一個引導類
主要作用是作爲啓動 Spring Boot 項目的入口
5)運行效果
運行 引導類 後,會出現 如下一個標識,你能不能看出來下邊這個圖是什麼東西?
在瀏覽器地址欄輸入 localhost:8080/hello 即可看到運行結果
6)簡化部署
在 pom.xml 添加如下插件後, 將這個工程打成 jar 包後,可直接通過 java -jar 的命令運行
如下操作進行打成 jar 包, 從控制檯可發現 打成的jar包所在目錄
1.4 Spring Boot項目底層原理
1.4.1 pom.xml文件
1)spring-boot-starter-parent 是當前項目的父級依賴
2)spring-boot-starter-web
依賴導入了 Web 項目運行所依賴的組件;如 Tomcat / SpringMVC等
1.4.2 引導類
通常有一個名爲 *Application 的入口 類,裏面定義一個main方法,使用
SpringApplication.run(HelloMailAppliation.class, args); 來啓動 SpringBoot 應用項目
@SpringBootApplication 註解主要組合了 @SpringBootConfiguration、@EnableAutoConfiguration、
@ComponentScan
@SpringBootApplication 註解說明:
標註在某個類上, 說明這個類是 Spring Boot 的引導類,Spring Boot 就應該運行這個類的main方法來
啓動 SpringBoot 應用;
@SpringBootApplication 是以下3個註解的總和:
@SpringBootConfiguration:用於定義一個Spring Boot的配置類( 配置類 等同 配置文件)
引用了 @Configuration 註解,是Spring底層的一個註解,用於定義 Spring 的配置類。
配置類也是容器中的一個組件 @Component
@EnableAutoConfiguration :
告訴Spring Boot開啓自動配置功能,這樣Spring Boot會自動根據你導入的依賴jar包來自動
配置項目。
@AutoConfigurationPackage ——》 @Import({Registrar.class})
會將引導類(@SpringBootApplication標註的類)所在的包及下面所有子包裏面的所有
組件掃描到Spring容器;
@Import({AutoConfigurationImportSelector.class})
將所有需要導入的組件以全類名的方式返回; 這些組件就會被添加到容器中
會給容器導入非常多的自動配置類(xxxxAutoConfiguration),就是導入並配置好當前項目
中所需要的組件,省去我們手動編寫配置去注入組件.
Spring Boot在啓動的時候從(spring-boot-autoconfigure-2.0.6.RELEASE.jar)類路徑下的METAINF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作爲自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作;以前我們需要自己配置的文件,自動配置類都幫我們完成了;
@ComponentScan: 該註解標識的類, 會被 Spring 自動掃描並且裝入bean容器。
1.5 使用Spring初始化器創建Spring Boot項目
注意:初始化嚮導需要聯網創建Spring Boot項目
引入功能模塊
默認生成的Spring Boot項目;
刪除不需要的文件與目錄 , spring-boot-starter-test 是 Spring Boot 單元測試模塊
引導類已經生成了,我們只需要實現業務即可
resources 文件夾中目錄結構:
static :保存所有的靜態資文件, js css images
templates :保存所有的模板頁面(Spring Boot默認jar包使用嵌入式的Tomcat,默認不支持JSP頁
面),可以使用模板引擎(freemarker、thymeleaf);
application.properties :Spring Boot應用的配置文件;可以修改一些默認設置;
如修改默認端口 server.prot=8081