1. SpringBoot 有哪些優(yōu)點?
- 提供了大量的 starter,,不用導入大量的 maven 依賴,,不用擔心版本問題。
2. SpringBoot 的核心注解是什么,?
- @SpringBootApplication 是 SpringBoot 的核心注解,,這個注解其實是一個是組合注解,它由 @ComponentScan,、@Configuration 和 @EnableAutoConfiguration 三個注解構(gòu)成,。@ComponentScan 是用來做 Spring 組件掃描的,即被掃描到的就會被 Spring 管理,;@Configuration 是用來實現(xiàn)配置文件的功能,;@EnableAutoConfiguration 是來實現(xiàn)自動配置功能的。
3. 什么是 Java config,?
- java config 就是用純 java 的方式來實現(xiàn)配置文件的功能,。
4. 說一說 SpringBoot 自動裝配的原理。
- SpringBoot 自動裝配的核心就是 @EnableAutoConfiguration 注解,,它會掃描 META-INF/spring.factotires 文件中配置的需要進行自動裝配的類名,,然后根據(jù)類名,找到這些類對應(yīng)的 properties.java 類,,讀取屬性進行配置,,然后加入到 IOC 容器中,,這就完成了自動配置。
5. SpringBoot 配置文件有哪些格式,?
6. SpringBoot 可以用 xml 配置嗎?
- 可以,,通過 @ImportResource 注解就可以導入自定義的配置,,但是 Spring 不推薦 xml 配置,推薦用 java config,。
7. bootstrap.properties 和 application.properties 有什么區(qū)別,?
- bootstrap.properties 先加載,,一般用于從配置中心拉取配置,。
8. SpringBoot 項目如何分環(huán)境開發(fā)?
- 不同的環(huán)境用不同的配置文件,,比如開發(fā)用 dev,,測試用 test,然后在 application.properties 中通過
spring.profile = dev 就可以指定用哪個環(huán)境的配置文件,。
9. 你在項目中是如何解決跨域問題的,?
- 通過 cors 來解決跨域問題,新建配置類實現(xiàn) WebMvcConfigurer 接口,,重寫其 addCorsMappings 方法,。也可以新建 CorsConfig 配置類,配置 CorsFilter 對象,。
10. 什么是 SpringBoot starter,?
- 一站式配置,聚合了一組依賴的 maven 依賴,,比如要創(chuàng)建 spring web 項目,,只需要引入 spring-boot-web-starter 即可,它會自動引入所需的依賴并且處理好依賴關(guān)系,。
11. 簡單介紹下 SpringCloud,。
- SpringCloud 是一個生態(tài),囊括了一系列的技術(shù),,包括注冊中心,,服務(wù)調(diào)用,服務(wù)熔斷降級,,服務(wù)配置中心,,服務(wù)網(wǎng)關(guān),消息總線,,消息驅(qū)動,,服務(wù)調(diào)用鏈路追蹤等。
12. SpringCloud 服務(wù)之間是怎么調(diào)用的?
- 通過 open feign 調(diào)用,,底層其實是 http 調(diào)用,。
13. 服務(wù)網(wǎng)關(guān)你們用來做什么?
- 統(tǒng)一對外的 API,,同時也可以保護內(nèi)部的 API,,所有的請求進來先到網(wǎng)關(guān),在這里做了權(quán)限控制,,身份校驗,,冪等校驗之后再進行流量轉(zhuǎn)發(fā)。
14. 你們的冪等校驗是怎么做的,?
- 攔截所有非 get 請求,,將請求的參數(shù)以及地址拼接成一個 key,然后去 Redis 中查詢該 key 是否有值,,如果有就直接返回 Redis 中的結(jié)果,,如果沒有,就將該請求轉(zhuǎn)發(fā)到對應(yīng)的服務(wù)中,,將操作結(jié)果放到 Redis 中,。
|