一、是什么?
springboot是spring開源下的可用java構架微服務的微框架,是spring組件一鍵式解決方案,主要是簡化了spring的使用難度,簡省了繁重的配置,提供了各種啟動器,開發者能快速上手,
二、為什么使用?
springboot優點特別多,他能幫我們迅速搭建一個微服務專案框架,使用它專案可獨立運行、配置簡單、應用監控、上手容易,
三、核心組態檔有哪些?它們有什么區別?
springboot的核心組態檔有application與bootstrap,
對比application組態檔,bootstrap有以下幾個特征:
bootstrap由applicationContext加載,優先于application加載,
application里面的屬性不能被覆寫
使用場景:
application組態檔容易理解,主要用于springboot專案的初始化配置,
bootstrap組態檔適用于以下場景:
1.從外部資源加載屬性,如使用springcloudconfig配置中心時,這時需要在bootstrap組態檔中添加連接到配置中心的配置屬性來加載外部配置中心的配制資訊,
2.一些固定的不能被覆寫的屬性
3.一些加密解密的場景
四、springboot的組態檔有哪幾種格式?它們有什么區別?
.yml與.properties,主要書寫格式不同,如下;其次是yml檔案不支持@propertySource注解匯入配置,
yml: user:name:Lena
properties:user.name=Lena
五、核心注解是哪個?主要由哪些注解組成?
啟動類上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要組合包含了以下 3 個注解:
@SpringBootConfiguration:組合了 @Configuration 注解,實作組態檔的功能,
@EnableAutoConfiguration:打開自動配置的功能,也可以關閉某個自動配置的選項,如關閉資料源自動配置功能:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }),
@ComponentScan:Spring組件掃描,
六、開啟spring特性有哪幾種方式?
1.繼承spring-boot-starter-parent專案
2.匯入spring-boot-dependencies專案依賴
七、需要獨立的容器運行嗎?
不需要,內置了tomcat
八、運行springboot有哪幾種方式?
1.放到容器中運行
2.使用maven/gradle插件運行
3.執行main方法運行
九、springboot自動配置原理?
借助springFactoriesLoader從classpath中搜尋所有META-INFO/spring.factories組態檔,并將其中對應的配置項通過反射實體化為對應的標注了@Configuration的javaConfig形式的Ioc配置容器類,然后匯總為一個并加載到當前springboot創建并使用的Ioc容器,
十、springboot目錄結構是怎么樣的?
如下圖是主流與推薦的目錄結構,MyApplication是這個程式的入口類,入口類放在一個專案的頂層包中,而在入口類加上@SpringBootApplication注解來開啟SpringBoot的各項能力,如組件配置,自動掃描等,其他類放在包的子目錄中,

十一、你如何理解springboot中的starters?
starters可以理解為啟動器,它包含了一系列可以集成到應用里面的依賴包,他們能快速持續的運行,都是一系列得到支持的管理傳遞型依賴,有了它,你可以一站式集成spring及其他技術,而不需要到處找實體代碼與依賴包,例如要想使用Spring JPA技術訪問資料庫,只需要加入spring-boot-starter-data-jpa啟動器依賴就可使用了,
十二、如何在springboot啟動的時候運行一些特定代碼?
可以實作CommindLineRunner或者ApplicationRunner介面,他們都只提供了run方法,若有多個CommindLineRunner或者ApplicationRunner介面,可使用@Order注解為它們排序,
十三、Springboot有哪幾種讀取配置的方式?
Springboot可以通過@PropertySource,@value,@Enviroment,@ConfigurationProperties來系結變數,
如果是.properties或者yaml檔案,常通過@value,@configurationProperties,@Enviroment來系結變數,
讀取指定properties檔案:@PropertySource+@Value,@PropertySource+@ConfigurationProperties
十四、springboot支持哪些日志框架,默認是哪個?
支持java util logging,log4j2,logback,如果你使用starters啟動器,默認是logback,無論使用哪種日志框架,spring都支持將日志輸出到控制臺或者檔案中,
配置日志方式有在屬性中配置(不夠靈活)與自定義組態檔(更靈活)兩種,根據不同的日志框架,默認加載的日志組態檔的檔案名,放在資源根目錄下,日志初始化在ApplicationContext創建之前,所以@PropertySources加載的配置是讀取不到的,系統環境變數、Spring Environment及application,bootstrap組態檔中的資訊可以讀取到,
十五、springboot實作熱部署有哪幾種方式?
主要有2種方式,spring loaded,springboot devtool
在springboot實作熱部署是一件容易的事,只需加入devtools配置依賴,若有特殊需求可加入自定義配置熱部署,完成后,代碼的修改可以自動部署并重新熱啟動專案,
十六、你如何理解spring配置加載順序?
所有的配置都有默認的加載順序,但spring允許我們調整這些配制來改變默認的配置行為,即“約定優先于配置”,我們將可對springboot的行為進行干預的配置方式劃分為以下幾種:
命令列引數;系統環境變數;位于檔案中的組態檔、位于classpath中的組態檔、固話到代碼中的配置項,第一個優先級最高,逐個遞減,優先級高的配置會覆寫優先級低的,
十七、springboot如何定義多套環境的配置?
springboot可以對不同的環境或者指令讀取不同的組態檔,例如有開發、測驗、生產3個不同的環境,配置方式有以下3種
在組態檔中指定:
1.基于properties檔案配置
需要另外建立3個檔案,application-dev/test/prod,3個檔案中分別配置不同環境的引數,然后在application.properties中指定當前的環境spring.profile.active = test,這時候讀取的就是application-test.properties.
2.基于yml檔案配置
只需建立一個application.yaml檔案就可,是推薦的方式,配置項同properties檔案,
3.在java代碼中通過@profile指定當前環境
在服務啟動時通過命令指定:
還可在啟動類中寫死:SpringApplication.setAdditionalProfiles方法,
十八、Springboot可以兼容老spring專案嗎?
可以,通過@ImportResource注解匯入老專案組態檔
十九、保護springboot專案有哪些方法?
在生產中使用https
使用snyk檢查你的依賴關系
升級到最新版
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/42060.html
標籤:架構設計
上一篇:Nginx入門簡介和反向代理、負載均衡、動靜分離理解
下一篇:網站架構優化性能
