springboot+springcloud相關面試題

wayen發表於2019-01-19

1.什麼是Springboot?

用來簡化spring應用的初始搭建以及開發過程 使用特定的方式來進行配置(properties或yml檔案)

  • 建立獨立的spring引用程式 main方法執行
  • 嵌入的Tomcat 無需部署war檔案
  • 簡化maven配置
  • 自動配置spring新增對應功能starter自動化配置

2.Springboot常用的starter有哪些?

  • spring-boot-starter-web 嵌入tomcat和web開發需要servlet與jsp支援
  • spring-boot-starter-data-jpa 資料庫支援
  • spring-boot-starter-data-redis redis資料庫支援
  • spring-boot-starter-data-solr solr支援
  • mybatis-spring-boot-starter 第三方的mybatis整合starter

3.Springboot自動配置的原理

在spring程式main方法中 新增@SpringBootApplication或者@EnableAutoConfiguration
會自動去maven中讀取每個starter中的spring.factories檔案 該檔案裡配置了所有需要被建立spring容器中的bean

4.springboot讀取配置檔案的方式

springboot預設讀取配置檔案為application.properties或者是application.yml

5.springboot整合mybatis的過程

新增mybatis的starter maven依賴

                <dependency>
                        <groupId>org.mybatis.spring.boot</groupId>
                        <artifactId>mybatis-spring-boot-starter</artifactId>
                        <version>1.2.0</version>
                </dependency>
    在mybatis的介面中 新增@Mapper註解
    在application.yml配置資料來源資訊
  

6.springboot如何新增【修改程式碼】自動重啟功能

新增開發者工具集=====spring-boot-devtools

Spring Cloud

1.springcloud如何實現服務的註冊和發現

服務在釋出時 指定對應的服務名(服務名包括了IP地址和埠) 將服務註冊到註冊中心(eureka或者zookeeper)
這一過程是springcloud自動實現 只需要在main方法新增@EnableDisscoveryClient 同一個服務修改埠就可以啟動多個例項
呼叫方法:傳遞服務名稱通過註冊中心獲取所有的可用例項 通過負載均衡策略呼叫(ribbon和feign)對應的服務

2.ribbon和feign區別

  1. 啟動類使用的註解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。
  2. 服務的指定位置不同,Ribbon是在@RibbonClient註解上宣告,Feign則是在定義抽象方法的介面中使用@FeignClient宣告。
  3. 呼叫方式不同:Ribbon需要自己構建http請求,模擬http請求然後使用RestTemplate傳送給其他服務,步驟相當繁瑣。Feign則是在Ribbon的基礎上進行了一次改進,採用介面的方式,將需要呼叫的其他服務的方法定義成抽象方法即可, 不需要自己構建http請求。不過要注意的是抽象方法的註解、方法簽名要和提供服務的方法完全一致。

3. springcloud斷路器的作用

當一個服務呼叫另一個服務由於網路原因或者自身原因出現問題時 呼叫者就會等待被呼叫者的響應 當更多的服務請求到這些資源時導致更多的請求等待,這樣就會發生連鎖效應(雪崩效應),斷路器就是解決這一問題。
斷路器有完全開啟狀態: 一定時間內 達到一定的次數無法呼叫 並且多次檢測沒有恢復的跡象 斷路器完全開啟,那麼下次請求就不會請求到該服務
半開:短時間內 有恢復跡象 斷路器會將部分請求發給該服務 當能正常呼叫時 斷路器關閉
關閉:當服務一直處於正常狀態 能正常呼叫 斷路器關閉。

相關文章