1. 程式人生 > >Springboot與springcloud面試題(一)

Springboot與springcloud面試題(一)

一. 什麼是springboot

1.用來簡化spring應用的初始搭建以及開發過程 使用特定的方式來進行配置(properties或yml檔案)
2.建立獨立的spring引用程式 main方法執行
3.嵌入的Tomcat 無需部署war檔案
4.簡化maven配置
5.自動配置spring新增對應功能starter自動化配置

二.springboot常用的starter有哪些

可以去Maven倉庫中搜索以下外掛,pom檔案依賴即可
Maven倉庫官網:http://mvnrepository.com/
1.spring-boot-starter-web (嵌入tomcat和web開發需要servlet與jsp支援)
2.spring-boot-starter-data-jpa (資料庫支援)
3.spring-boot-starter-data-redis (redis資料庫支援)
4.spring-boot-starter-data-solr (solr搜尋應用框架支援)
5.mybatis-spring-boot-starter (第三方的mybatis整合starter)

三. springboot自動配置的原理

[email protected]

   這個註釋告訴SpringBoot“猜”你將如何想配置Spring,基於你已經新增jar依賴項。

  如果spring-boot-starter-web已經新增Tomcat和Spring MVC,這個註釋自動將假設您正在開發一個web應用程式並新增相應的spring設定。會自動去maven中讀取每個starter中的spring.factories檔案 該檔案裡配置了所有需要被建立spring容器中的bean

2.使用@SpringbootApplication註解

   可以解決根類或者配置類(我自己的說法,就是main所在類)頭上註解過多的問題,一個@SpringbootApplication相當於@Configuration,@EnableAutoConfiguration和 @ComponentScan 並具有他們的預設屬性值

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

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

技術分享圖片

application.properties.PNG

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配置資料來源資訊

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

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

六.微服務

    以前的模式是所有的程式碼在同一個工程中 部署在同一個伺服器中 同一個專案的不同模組不同功能互相搶佔資源
    微服務 將工程根據不同的業務規則拆分成微服務 微服務部署在不同的機器上 服務之間進行相互呼叫
    Java微服務的框架有 dubbo(只能用來做微服務),spring cloud(提供了服務的發現,斷路器等)

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

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

八.ribbon和feign區別

        Ribbon新增maven依賴 spring-starter-ribbon    使用@RibbonClient(value="服務名稱")    使用RestTemplate呼叫遠端服務對應的方法
        feign新增maven依賴 spring-starter-feign    服務提供方提供對外介面  呼叫方使用    在介面上使用    @FeignClient("指定服務名")
Ribbon和Feign的區別:
Ribbon和Feign都是用於呼叫其他服務的,不過方式不同。
1.啟動類使用的註解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。
2.服務的指定位置不同,Ribbon是在@RibbonClient註解上宣告,Feign則是在定義抽象方法的介面中使用@FeignClient宣告。
3.呼叫方式不同,Ribbon需要自己構建http請求,模擬http請求然後使用RestTemplate傳送給其他服務,步驟相當繁瑣。
Feign則是在Ribbon的基礎上進行了一次改進,採用介面的方式,將需要呼叫的其他服務的方法定義成抽象方法即可,
不需要自己構建http請求。不過要注意的是抽象方法的註解、方法簽名要和提供服務的方法完全一致。

九.springcloud斷路器的作用

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

相關推薦

Springbootspringcloud試題()

一. 什麼是springboot 1.用來簡化spring應用的初始搭建以及開發過程 使用特定的方式來進行配置(properties或yml檔案) 2.建立獨立的spring引用程式 main方法執行 3.嵌入的Tomcat 無需部署war檔案 4.簡化maven配置 5.

Android試題-效能優化相關試題

本文配套視訊 配套視訊、 配套視訊 配套視訊 原始碼分析相關面試題 與XMPP相關面試題 與效能優化相關面試題 與登入相關面試題 與開發相關面試題 與人事相關面試題 9-記憶體洩漏和記憶體溢位分別是

java試題

情況 減少 元素 pro pin 內存大小 java_opts req -xms 個人的一點參考總結,如有雷同,純屬巧合! 1、hashmap的實現原理以及hashtable的線程安全是怎麽實現的?HashMap其實也是一個線性的數組實現的,所以可以理解為其存儲數據的容

【面試】iOS 開發試題(

readonly ava obj jce easy 主動 每一個 我不 com   1. #import 跟#include 又什麽差別,@class呢, #import<> 跟 #import””又什麽差別?   答:#import是Obje

Java常考試題()

div 並且 功能 不出 共享 情況 字符型 對象 java字節碼       序言         我是一只亂飛亂撞的菜鳥,寫的文章目前是以記錄自己學習,和方便以後查看,期待日後不久能通過自己的努力,獲得一點小小的成功,然後寫出我的學習經驗總結性文章來。         

試題()

res global 刷新 遠程 mkdir chm chmod con label 1. 如何用列表切片的方式取出列表a = [1,2,3,4,5]中的3? a[2:3] 2. 說說列表是如何排序的? 列表排序: 永久性排序:升序 sort 降序 sort

315道試題()

cnblogs p地址 繼承 第三方庫 出現的次數 韓文 事務處理 輸入 __call 1、為什麽學習Python?語言本身簡潔,優美,功能超級強大 跨平臺 非常火爆的社區 很多有名的大公司在用 2、通過什麽途徑學習的Python?培訓機構 + 自學 3、Python和Ja

mapreduce試題

  1.編寫程式統計出HDFS檔案系統中檔案大小小於HDFS叢集中的預設塊大小的檔案佔比 比如:大於等於128M的檔案個數為98,小於128M的檔案總數為2,所以答案是2%     package com.test.a; import org.

佇列試題C++

概念 1.圖的深度優先遍歷(DFS) 可以用棧實現,從根結點開始沿左孩子到最深的節點壓入棧中,然後依次彈出,若棧頂節點還有沒有訪問的孩子,則沒訪問過得孩子入棧直到最深的節點,然後再彈出。元素入棧順序則為深度優先遍歷順序。 2.圖的寬度優先遍歷(BFS) 可以用佇列實現,將根結點放入佇

springboot 以及spring試題

1、什麼是 Spring Boot? Spring Boot 是 Spring 開源組織下的子專案,是 Spring 元件一站式解決方案,主要是簡化了使用 Spring 的難度,簡省了繁重的配置,提供了各種啟動器,開發者能快速上手。   2、為什麼要用 Spring Boot?

嵌入式Linux軟體工程師試題

  題一,同步和非同步有啥區別? 題二,TCP與UDP有啥區別? 題三,程序和執行緒有啥區別? 題一答案: 同步(Sync):所有的操作都做完,才返回給使用者。這樣使用者線上等待的時間太長,給使用者一種卡死了的感覺(比如系統遷移中,點選了遷移,介面就不動了,但是程式還在執行

httptcp試題5

1.HTTPS的加密方式是什麼,講講整個加密解密流程。  加密方式: 1)、對稱密碼演算法:指加密和解密使用相同的金鑰,速度高,可加密內容較大,用來加密會話過程中的訊息。典型演算法DES、AES、RC5、IDEA(分組加密)RC4。   2)、非對稱密碼演算法:又

httptcp試題4

  -4.DNS使用的協議(既使用TCP也使用UDP)yes!       1)、首先了解一下TCP與UDP傳送位元組的長度限制:          

httptcp試題3

1、http/1.0、http/1.1和http2.0有什麼區別。       (1)、http/1.0協議預設使用非持久連線(短連線),既在非持久連線下,伺服器處理完客戶端一個請求後立即斷開TCP連線,下次客戶端再次請求需要重新建

httptcp試題2

1.當你用瀏覽器開啟一個連結的時候,計算機做了哪些工作步驟      (1)、解析域名。      (2)、發起TCP的3次握手。      (3)、建立TCP請

httptcp試題1

1.簡述 Http 請求 get 和 post 的區別以及資料包格式。 HTTP(HyperText Transport Protocol,超文字傳送協議) http請求資料包的格式:頭部(request line + header)+  資料(data) 頭部和

資料結構演算法試題

由於這些題,實在太火了。所以,應廣大網友建議要求,在此把之前已整理公佈的前80題, 現在,一次性分享出來。此也算是前80題第一次集體亮相。 此些題,已有上萬人,看到或見識到,若私自據為己有,必定為有知之人識破,付出代價。 所以,作者宣告: 本人

C/C++知識點之C/C++經典試題

本文主要向大家介紹了 C/C++知識點之C/C++經典面試題一,通過具體的內容向大家展示,希望對大家學習C/C++知識點有所幫助。 1.變數的宣告和定義有什麼區別? 常量:在程式執行過程中,不會發生改變的量,不能被改變的量 變數:在程式執行過程中,可以被改變的量 定義變數的方式:資料型別

SpringCloud試題

一.SpringCloud面試題口述 1.SpringCloud和Dubbo SpringCloud和Dubbo都是現在主流的微服務架構 SpringCloud是Apache旗下的Spring體系下的微服務解決方案 Dubbo是阿里系的分散式服務治理框架 從技術維度上,其實Spr

springboot的pom中找不到mysql-connector-java,以及springbootspringcloud版本衝突

我springboot選用了2.0.5.RELEASE <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta