SpringBoot-相關問題

超負荷小生發表於2020-09-29

1、什麼是 Spring Boot?為什麼要用 Spring Boot?

2、SpringBoot的核心配置檔案有那幾個?它們的區別是什麼?

  • SpringBoot的核心配置檔案有application和bootstarp配置檔案
  • 區別
    (1) application檔案主要用於Springboot自動化配置檔案。
    (2) 一些固定的不能被覆蓋的屬性
    (3)一些加密/解密的場景

3、SpringBoot的配置檔案有哪幾種格式?它們有什麼區別?

  • SpringBoot的配置檔案兩種格式:xxx.properties檔案,xxx.yml檔案。
  • 兩種檔案的區別:
    (1) .properties 檔案中的內容是key=value的格式,.yml檔案中的內容是 key:value格式
    (2) yml 有空格要求,層級嚴格,載入屬性有順序,不支援@PropertySource註解匯入配置

4、Spring Boot 的核心註解是哪個?它主要由哪幾個註解組成的?

  • SpringBoot的核心註解是@SpringBootApplication
  • 該註解組成
    (1) @Configuration:等同於spring的XML配置檔案檔案;使用
    (2) @EnableAutoConfiguration:開啟自動配置
    (3) @ComponentScan:元件掃描,可自動發現和裝配一些Bean

5、開啟 Spring Boot 特性有哪幾種方式

  • 繼承spring-boot-starter-parent專案
  • 匯入spring-boot-dependencies專案依賴

6、Spring Boot 需要獨立的容器執行嗎

  • 不需要,內嵌Tomcat/Jetty伺服器

7、執行 Spring Boot 有哪幾種方式?

  • 執行方式的詳細參考連結
  • 執行帶有main方法類
  • 通過命令列 java -jar 的方式
  • 通過spring-boot-plugin的方式

8、SpringBoot自動配置原理
①、springboot啟動類上有@SpringBootApplication註解,該註解是一個複合註解(派生註解),其中就有@EnableAutoConfiguration開啟自動配置的註解。
在這裡插入圖片描述②、@EnableAutoConfiguration註解也是一個派生註解,其中的關鍵功能由@Import(AutoConfigurationImportSelector.class)提供。
在這裡插入圖片描述
③、AutoConfigurationImportSelector.class中有selectImports()方法,具體實現如下
在這裡插入圖片描述一路查詢到 -> 關鍵程式碼處:SpringFactoriesLoader.loadFactoryNames()
在這裡插入圖片描述通過SpringFactoriesLoader.loadFactoryNames() 掃描所有具有META-INF/spring.factories的jar包,把掃描到的這些檔案的內容包裝成properties物件從properties中獲取EnableAutoConfiguration.class類(類名)對應的值,然後把他們新增在容器中。
在這裡插入圖片描述
至此,@EnableAutoConfiguration註解通過@SpringBootApplication被間接的標記在了Spring Boot的啟動類上。在SpringApplication.run(…)的內部就會執行selectImports()方法,找到所有JavaConfig自動配置類的全限定名對應的class,然後將所有自動配置類載入到Spring容器中。

精髓:

1)、SpringBoot啟動會載入大量的自動配置類
2)、我們的關注點是自己需要的功能有沒有SpringBoot預設寫好的自動配置類;
3)、再來看這個自動配置類中到底配置了哪些元件;(只要我們要用的元件有,我們就不需要再來配置了)
4)、給容器中自動配置類新增元件的時候,會從properties類中獲取某些屬性。我們就可以在配置檔案中指定這些屬性的值;

xxxxAutoConfigurartion:自動配置類;
給容器中新增元件
xxxxProperties:封裝配置檔案中相關屬性;

9、Spring Boot 的目錄結構是怎樣的
在這裡插入圖片描述

相關文章