SpringBoot-相關問題
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 的目錄結構是怎樣的
相關文章
- octomap相關問題
- django相關問題Django
- electron相關問題
- Docker 相關問題Docker
- Java相關問題整理Java
- 大模型相關問題大模型
- python pip相關問題Python
- Spring相關問題記錄Spring
- 瀏覽器相關問題瀏覽器
- mysql相關問題總結MySql
- Silverlight安裝相關問題
- RUST所有權相關問題Rust
- 關於盒模型相關的問題模型
- [20191202]關於hugepages相關問題.txt
- 關於 go-micro 相關問題Go
- HandlerThread解析以及相關問題分析thread
- 多執行緒相關問題執行緒
- 中介軟體相關問題整理
- 個人專案相關問題
- 資料庫事物相關問題資料庫
- 上傳下載相關問題
- java語言相關的問題Java
- [20190108]rlwrap sqlplus tee相關問題.txtSQL
- 前端面試之js相關問題前端面試JS
- [20180413]熱備模式相關問題.txt模式
- SpringBoot --spring.profiles.active相關問題Spring Boot
- 面試遇到的redis相關問題面試Redis
- Laravel佇列相關問題記錄Laravel佇列
- TCP/IP 協議相關的問題TCP協議
- svn相關問題解決辦法
- MySQL中鎖的相關問題DTQUMySql
- win10 下關於redis的相關問題Win10Redis
- Hadoop/Spark相關面試問題總結HadoopSpark面試
- 翻譯 | SpringBoot相關的面試問題Spring Boot面試
- HTTPS總結+相關面試問題解答HTTP面試
- 在 dubbo 中使用 Threadlocal 的相關問題thread
- Flutter-Android 應用打包相關問題FlutterAndroid
- k8s 相關問題彙總K8S