1. 程式人生 > 實用技巧 >Springboot相關面試問題

Springboot相關面試問題

1.什麼是springboot?

  多年來,隨著新功能的增加,spring 變得越來越複雜。訪問spring官網頁面,我們就會看到可以在我們的應用程式中使用的所有 Spring 專案的不同功能。如果必須啟動一個新的 Spring 專案,我們必須新增構建路徑或新增 Maven 依賴關係,配置應用程式伺服器,新增 spring 配置。因此,開始一個新的 spring 專案需要很多努力,因為我們現在必須從頭開始做所有事情。

  Spring Boot 是解決這個問題的方法。Spring Boot 已經建立在現有 spring 框架之上。使用 spring 啟動,我們避免了之前我們必須做的所有樣板程式碼和配置。因此,Spring Boot 可以幫助我們以最少的工作量,更加健壯地使用現有的 Spring功能。

  簡單來說,Springboot就是用來簡化spring應用的初始搭建及開發過程,使用特定的方式來進行配置(properties或yml檔案),使用約定大於配置的原則,去繁從簡,通過嵌入Tomcat,無需部署war包,直接執行一個main方法就能建立一個獨立的,產品級別的應用.

2.Springboot有哪些優點?

  1)快速建立獨立執行的spring專案與主流框架整合 ,減少開發前期的準備工作

  2)大量的自動配置,簡化開發,避免大量的 Maven 匯入和各種版本衝突,也可修改預設值

  3)使用嵌入式的servlet容器,應用無需打包成war包,不再需要自己去啟動 Tomcat

  4)使用properties或yml檔案,配置簡單清晰

3.如何重新載入Spring Boot上修改的檔案,而無需重新啟動伺服器?

  這可以使用 DEV 工具來實現。通過這種依賴關係,您可以節省任何更改,嵌入式tomcat 將重新啟動。Spring Boot 有一個開發工具(DevTools)模組,它有助於提高開發人員的生產力。Java 開發人員面臨的一個主要挑戰是將檔案更改自動部署到伺服器並自動重啟伺服器。開發人員可以重新載入 Spring Boot 上的更改,而無需重新啟動伺服器。這將消除每次手動部署更改的需要。

  Dev工具的依賴:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true
</optional>

4.Springboot中的監視器是什麼?

  SpringBoot actuator 是 spring 啟動框架中的重要功能之一。Spring boot 監視器可幫助您訪問生產環境中正在執行的應用程式的當前狀態。有幾個指標必須在生產環境中進行檢查和監控。即使一些外部應用程式可能正在使用這些服務來向相關人員觸發警報訊息。監視器模組公開了一組可直接作為 HTTP URL 訪問的REST 端點來檢查狀態。

5.如何在Springboot中禁用監視器(Actuator)端點安全性?

  預設情況下,所有敏感的 HTTP 端點都是安全的,只有具有 ACTUATOR 角色的使用者才能訪問它們。安全性是使用標準的 HttpServletRequest.isUserInRole 方法實施的。 我們可以使用來禁用安全性。只有在執行機構端點在防火牆後訪問時,才建議禁用安全性。

6.如何使用Springboot實現分頁和排序?

  使用 Spring Boot 實現分頁非常簡單。使用 Spring Data-JPA 可以實現將可分頁的傳遞給儲存庫方法。

7.如何使用Springboot實現異常處理?

  Spring 提供了一種使用 ControllerAdvice 處理異常的非常有用的方法。 我們通過實現一個 ControlerAdvice 類,來處理控制器類丟擲的所有異常。

8.Springboot常用的starter有哪些?

  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

9.Springboot自動配置的原理?

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

10.Springboot讀取配置檔案的方式?

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

11.Springboot整合mybatis的方式?

  1)新增mybatis的starter maven依賴

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter </artifactId>
<version>1.2.0</version>

  2)在mybatis的介面中 新增@Mapper註解

  3)在application.yml/application.properties配置資料來源資訊

12.常見的starter會包含哪幾個方面的內容?分別是什麼?

  常見的starter會包含如下四個方面的內容: 

    1)自動配置檔案: 根據classpath判斷是否存在指定的類來決定是否要執行該功能的自動配置。

    2)spring.factories: 非常重要,指導Spring Boot找到指定的自動配置檔案。

    3)endpoint:可以理解為一個admin,包含對服務的描述、介面、互動(業務資訊的查詢)。

    4)health indicator: 該starter提供的服務的健康指標。  

  兩個需要注意的點:

    1)@ConditionalOnMissingBean的作用是:只有對應的bean在系統中都沒有被建立,它修飾的初始化程式碼塊才會執行,【使用者自己手動建立的bean優先】.

    2)Spring Boot Starter找到自動配置檔案(xxxxAutoConfiguration之類的檔案)的方式有兩種:

      spring.factories:由Spring Boot觸發探測classpath目錄下的類,進行自動配置.

      @EnableXxxxx:有時需要由starter的使用者觸發*查詢自動配置檔案的過程

13.Springboot Starter的工作原理?

  Spring Boot Starter的工作原理如下:

    1. Spring Boot 在啟動時掃描專案所依賴的JAR包,尋找包含spring.factories檔案的JAR.

    2. 根據spring.factories配置載入AutoConfigure類

    3. 根據 @Conditional註解的條件,進行自動配置並將Bean注入Spring Context