SpringBoot-記

桑无發表於2024-03-23

SpringBoot是什麼

Spring Boot 是 Spring 開源組織下的子專案,是 Spring 元件一站式解決方案,主要是簡化了使用 Spring 的難度,簡省了繁重的配置,提供了各種啟動器,使開發者能快速上手。
Spring Boot 優點
一、獨立執行
Spring Boot內嵌了各種servlet容器,Tomcat、Jetty等,現在不再需要打成war包部署到容器中,Spring Boot只要打成一個可執行的jar包就能獨立執行,所有的依賴包都在一個jar包內。
二、簡化配置
spring-boot-starter-web啟動器自動依賴其他元件,簡化了maven的配置。
三、自動配置
Spring Boot能根據當前類路徑下的類、jar包來自動配置bean,如新增一個spring-boot-starter
web啟動器就能擁有web的功能,無需其他配置。
四、無程式碼生成和XML配置
Spring Boot配置過程中無程式碼生成,也無需XML配置檔案就能完成所有配置工作,這一切都是藉助 於條件註解完成的,這也是Spring4.x的核心功能之一。
五、應用監控
Spring Boot提供一系列端點可以監控服務及應用,做健康檢測。

Spring Boot 的核心註解

啟動類上面的註解是@SpringBootApplication,是一個複合註解,它也是 Spring Boot 的核心註解,包含三個子註解:
@SpringBootConfiguration:組合了 @Configuration 註解,實現配置檔案的功能。
@EnableAutoConfiguration:開啟自動配置的功能,也可以關閉某個自動配置的選項,如關閉資料來源自動配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class
})。
@ComponentScan:Spring元件掃描

執行Spring Boot的方式

  1. 打包成Jar或War檔案。使用Maven或Gradle構建工具將Spring Boot專案打包為Jar或War檔案。打包完成後,可以透過java -jar命令執行Jar檔案,或者將War檔案部署到外部Servlet容器(如Tomcat、Jetty)中。
  2. 使用IDE中的Run按鈕。在Eclipse、IntelliJ IDEA等IDE中,可以直接執行Spring Boot應用。這種方式適用於開發和測試環境。
  3. 使用Maven外掛。在專案的pom.xml檔案中配置spring-boot-maven-plugin外掛,然後使用mvn spring-boot:run命令來執行Spring Boot應用。這種方式支援熱部署和整合其他外掛功能。
  4. 使用Gradle外掛。在專案的build.gradle檔案中配置spring-boot-gradle-plugin外掛,然後使用gradle bootRun命令來執行Spring Boot應用。
  5. 使用Docker容器。可以將Spring Boot專案打包為Docker映象,並執行在Docker容器中。這種方式適用於需要頻繁部署和測試的場景。
    簡單:
  6. 打包用命令或者放到容器中執行
  7. 用 Maven/Gradle 外掛執行
  8. 直接執行 main 方法執行

SpringBoot 實現熱部署的方式

主要有兩種方式:
● Spring Loaded
● Spring-boot-devtools

  1. Spring Loaded此種方式與Debug模式類似,適用範圍有限,但是不依賴於Debug模式啟動,透過Spring Loaded庫檔案啟動,即可在正常模式下進行實時熱部署。此種需要在 run confrgration 中進行配置。
  2. 在 Spring Boot 專案中新增 spring-boot-devtools依賴即可實現頁面和程式碼的熱部署。
    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
    此種方式的特點是作用範圍廣,系統的任何變動包括配置檔案修改、方法名稱變化都能覆蓋,但是後遺症也非常明顯,它是採用檔案變化後重啟的策略來實現了,主要是節省了我們手動點選重啟的時間,提高了實效性,在體驗上回稍差。spring-boot-devtools 預設關閉了模版快取,如果使用這種方式不用單獨配置關閉模版快取。

SpringBoot的配置載入順序

  1. 命令列引數:透過命令列傳遞的引數會覆蓋其他配置,具有最高的優先順序。例如,java -jar --server.port=8888 會設定伺服器埠為8888。
  2. 外部配置檔案:SpringBoot會自動載入jar包內部及jar包所在目錄指定位置的配置檔案。預設情況下,優先載入application.yml檔案,其次載入application.properties檔案。可以透過spring.config.location指定預設配置檔案的位置。
  3. 系統屬性:Java系統屬性System.getProperties()中的配置具有較低的優先順序。
  4. 環境變數:作業系統的環境變數中的配置也具有較低的優先順序。
  5. RandomValuePropertySource:配置的random.*屬性值具有較低的優先順序。
  6. @PropertySource註解:透過@Configuration註解類上的@PropertySource指定的配置檔案具有較低的優先順序。
  7. SpringApplication.setDefaultProperties():透過SpringApplication.setDefaultProperties()指定的預設屬性具有較低的優先順序。

Spring Boot 的核心配置檔案

Spring Boot 的核心配置檔案是 application 和 bootstrap 配置檔案。
application 配置檔案主要用於 Spring Boot 專案的自動化配置。
bootstrap 配置檔案有以下幾個應用場景。
● 使用 Spring Cloud Config 配置中心時,這時需要在 bootstrap 配置檔案中新增連線到配置中心的配置屬性來載入外部配置中心的配置資訊;
● 一些固定的不能

相關文章