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 的目錄結構是怎樣的
相關文章
- Docker 相關問題Docker
- Java相關問題整理Java
- PHP相關問題集合PHP
- mysql相關問題總結MySql
- 個人專案相關問題
- Sql Mode及相關問題SQL
- Oracle MTS的相關問題Oracle
- 瀏覽器相關問題瀏覽器
- 關於盒模型相關的問題模型
- 關於 go-micro 相關問題Go
- 中介軟體相關問題整理
- java語言相關的問題Java
- Spring相關問題記錄Spring
- 面試遇到的redis相關問題面試Redis
- 資料庫事物相關問題資料庫
- Oracle kill session相關問題(上)OracleSession
- Oracle kill session相關問題(下)OracleSession
- 多執行緒相關問題執行緒
- GoldenGate實施相關問題Go
- 【Java面試題】如何回答GC相關問題Java面試題GC
- HandlerThread解析以及相關問題分析thread
- TCP/IP 協議相關的問題TCP協議
- 前端面試之js相關問題前端面試JS
- Laravel佇列相關問題記錄Laravel佇列
- MySQL中鎖的相關問題DTQUMySql
- Android 軟鍵盤相關問題Android
- win10 下關於redis的相關問題Win10Redis
- Unix程式設計/應用問答中文版 ---12.日誌相關問題 13.程式相關問題(轉)程式設計
- iptables刪除命令中的相關問題
- Silverlight安裝相關問題
- Hadoop/Spark相關面試問題總結HadoopSpark面試
- js--原型和原型鏈相關問題JS原型
- HTTPS總結+相關面試問題解答HTTP面試
- 與堆和堆排序相關的問題排序
- git相關問題解析,你想要的都有?Git
- 使用並查集解決的相關問題並查集
- 前端面試之js相關問題(一)前端面試JS
- 前端面試之js相關問題(二)前端面試JS