Spring Boot 是一個框架,一種全新的編程規范,他的產生簡化了框架的使用,所謂簡化是指簡化了 Spring 眾多框架中所需的大量且繁瑣的配置文件,所以 Spring Boot 是一個服務於框架的框架,服務范圍是簡化配置文件。從本質上來說,Spring Boot 其實就是 Spring 框架的另一種表現形式。 Spring Boot 是目前流行的微服務 框架,使用 Spring Boot 可以快速創建基於 Spring 生產級的獨立應用程序。Spring Boot 提供 了很多核心功能,如自動化配置、starter 簡化 Maven 配置、內嵌 Servlet 容器、應用監控等 功能,它還集成了大量常用的第三方庫配置,Spring Boot 應用中這些第三方庫幾乎可以是 零配置的開箱即用,使開發者能夠更加專注於業務邏輯。總統來說,Spring Boot 主要有如下優勢:
快速創建獨立運行的 Spring 項目以及與主流框架集成。
使用嵌入式的 Servlet 容器,應用無需打成 WAR 包。
starters 自動依賴與版本控制。
大量的自動配置,簡化開發,也可修改默認值。
無需配置 XML,無代碼生成,開箱即用。
准生產環境的運行時應用監控。
與雲計算的天然集成。
微服務是未來發展的趨勢,項目會從傳統架構慢慢轉向微服務架構,因為微服務可以使 不同的團隊專注於更小范圍的工作職責、使用獨立的技術、更安全更頻繁地部署。而 Spring Boot 繼承了 Spring 的優良特性,與 Spring 一脈相承,而且支持各種 REST API 的實現方式。 Spring Boot 也是官方大力推薦的技術,可以看出,Spring Boot 是未來發展的一個大趨勢。
安裝與配置 Maven
Maven 是目前最流行的項目管理工具。Maven 官方下載網址為: http://maven.apache.org/download.cgi,大家可以根據自己的需求下載合適版本的 Maven,本書版本 apache-maven-3.3.9。
雖然在 IDEA 中已經包含 Maven 插件,但是還是希望大家在工作中能安裝自己的 Maven 插件,方便項目配置。
下載完成后解壓即可,然后將安裝路徑(比如:D:\java\apache-maven-3.3.9\bin)配置在 環境變量 path 中。
配置完成后,在命令窗口中執行:mvn -v,驗證Maven 是否安裝成功。
安裝成功后,在 IDEA 中配置 Maven,具體步驟如下:
在安裝目錄(如:D:\java\apache-maven-3.3.9)下新建空文件夾 repository,作為本地倉庫。
修改 apache-maven-3.3.9–>conf–>settings 配置文件

在 IDEA 界面中選擇 File->Settings,在窗口中搜索 Maven 選項,配置為自己的 Maven


10.4.2 啟動類
Spring Boot 的啟動類的類名是根據項目名稱生成的,它的作用是啟動 Spring Boot 項 目,是基於 Main 方法來運行的。
啟動類中@SpringBootApplication 注解:是一個組合注解,包含 @SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan 三個注解,是項目 啟動注解。
@SpringBootConfiguration :是@Configuration 注解的派生注解,跟@Configuration 注解的功能一致,標注這個類是一個配置類,只不過@SpringBootConfiguration 是 springboot 的注解,而@Configuration 是 spring 的注解。
@Configuration :通過對 bean 對象的操作替代 spring 中 xml 文件 。
@EnableAutoConfiguration:Spring Boot 自動配置(auto-configuration),嘗試根 據你添加的 jar 依賴自動配置你的 Spring 應用。是@AutoConfigurationPackage 和 @Import(AutoConfigurationImportSelector.class) 注解的組合。
@AutoConfigurationPackage :自動注入主類下所在包下所有的加了注解的類 (@Controller,@Service 等),以及配置類(@Configuration)
@Import:直接導入普通的類。
@ComponentScan:組件掃描,可自動發現和裝配一些 Bean。
@ConfigurationPropertiesScan:@ConfigurationPropertiesScan 掃描配置屬性。 @EnableConfigurationProperties 注解的作用是使用 @ConfigurationProperties 注解的類生效。
注意:啟動類在啟動時會做注解掃描(@Controller、@Service、@Repository......), 掃描 位置為同包或者子包下的注解,所以啟動類的位置應放於包的根下。
繼承 Spring Boot 的父級依賴,只有繼承如下依賴項目才是真正的 Spring Boot 項目,依賴如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> spring-boot-starter-parent 是一個特殊的 starter,它用來提供相關的 Maven 默認依賴。 使用它之后,常用的包依賴可以省去 version 標簽。
2. 依賴 使用 Spring Initializer 快速創建的 Spring Boot 項目默認添加了如下依賴: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> spring-boot-starter-web:spring-boot-starter-web 啟動器支持全棧式 Web 開發,包括 Tomcat 和 spring-webmvc 等,引入該啟動器,便能獲得 Web 服務相關場景的 jar 包。 spring-boot-starter-test:引入這個啟動器,就會把所有與測試相關場景的 jar 包引入。
Spring Boot 提供了非常多的 starters 啟動器。starters 啟動器包含了一系列可以集成到應 用里面的依賴包,你可以一站式集成 Spring 及其他技術,而不需要到處找示例代碼和依賴 包。例如你想使用 Spring JPA 訪問數據庫,只要加入 spring-boot-starter-data-jpa 啟動器依賴 就能使用了。 3. 插件 spring-boot-maven-plugin 插件是將 Spring Boot 應用程序打包成 jar 包的插件,如下: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 將所有應用啟動運行所需要的 jar 包都包含進來,從邏輯上講具備了獨立運行的條件。 可以使用"mvn package"進行打包,然后使用"java -jar 項目"命令就可以直接運行。
配置文件的作用是修改 Spring Boot 自動配置的默認值。Spring Boot 提供一個名稱為 application 的全局配置文件,支持兩種格式 properteis 格式與 YAML 格式。
除了 properties 文件外,SpringBoot 還可以使用 yml 文件進行配置。 YAML 格式配置文件的擴展名可以是 yaml 或 yml。
1. YAML 基本語法
K:(空格)V 標識一對鍵值對 。
以空格的縮進來控制層級關系 。
只要是左對齊的一列數據,都是同一層級的 。
屬性和值也是大小寫敏感。
配置 Tomcat 監聽端口,如下:
server:
port: 8089
2. 配置文件存放位置
當前項目根目錄中
當前項目根目錄下的一個/config 子目錄中
項目的 resources 即 classpath 根路徑中
項目的 resources 即 classpath 根路徑下的/config 目錄中
3. 配置文件加載順序
不同格式的加載順序
如果同一個目錄下,有 application.yml 也有 application.properties,默認先讀取application.properties。
如果同一個配置屬性,在多個配置文件都配置了,默認使用第 1 個讀取到的,后面讀 取的不覆蓋前面讀取到的。
不同位置的加載順序
當前項目根目錄下的一個/config 子目錄中(最高)
config/application.properties
config/application.yml
當前項目根目錄中(其次)
application.properties
application.yml
項目的 resources 即 classpath 根路徑下的/config 目錄中(一般)
resources/config/application.properties
resources/config/application.yml
項目的 resources 即 classpath 根路徑中(最后)
resources/application.properties
resources/application.yml
@RestController
@RestController 注解包含了原來的@Controller 和@ResponseBody 注解,@Controller 注解已經非常了解了,這里不再贅述,@ResponseBody 注解是將返回的數據結構轉換為Json 格式。
@GetMapping
@PostMapping
@PutMapping
@PutMapping 注解是@RequestMapping(method = RequestMethod.PUT)的縮寫。更新資 源應該使用 PUT。
@DeleteMapping
@DeleteMapping 注解是@RequestMapping(method = RequestMethod.DELETE)的縮寫。 刪除資源應該使用 DELETE。
