2020年最新面試官常問的SpringBoot面試題


今天寫的這篇主要總結了SpringBoot相關的問題。還有更多面試專題及java資料、筆記等可以添加微信:YDT939免費獲取

 

Q:什么是SpringBoot?

用來簡化spring應用的初始搭建以及開發過程,使用特定的方式來進行配置(propertiesyml文件)創建獨立的spring引用程序 main方法運行,嵌入的Tomcat 無需部署war文件,簡化maven配置,自動配置spring添加對應功能starter自動化配置。

 

Q: Spring Boot、Spring MVC 和 Spring 有什么區別?

1、SpringSpring最重要的特征是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉。當我們恰當的使用 DI 或者是 IOC 的時候,我們可以開發松耦合應用。松耦合應用的單元測試可以很容易的進行。
2、Spring MVC提供了一種分離式的方法來開發 Web 應用。通過運用像DispatcherServeletMoudlAndViewViewResolver 等一些簡單的概念,開發 Web 應用將會變的非常簡單。
3、Spring 和 SpringMVC 的問題在於需要配置大量的參數。
4、Spring Boot 通過一個自動配置和啟動的項來目解決這個問題。為了更快的構建產品就緒應用程序,Spring Boot 提供了一些非功能性特征。

 

Q:Spring Boot 的核心注解是哪個?它主要由哪幾個注解組成的?

1、@SpringBootConfiguration:組合了 @Configuration 注解,實現配置文件的功能。
2、@EnableAutoConfiguration:打開自動配置的功能,也可以關閉某個自動配置的選項,如關閉數據源自動配置功能。
3、@ComponentScan:Spring組件掃描。

 

Q:什么是 JavaConfig?

1、面向對象的配置。由於配置被定義為 JavaConfig 中的類,因此用戶可以充分利用 Java 中的面向對象功能。一個配置類可以繼承另一個,重寫它的@Bean 方法等。
2、減少或消除 XML 配置。基於依賴注入原則的外化配置的好處已被證明。但是,許多開發人員不希望在 XML 和 Java 之間來回切換。JavaConfig 為開發人員提供了一種純 Java 方法來配置與 XML 配置概念相似的 Spring 容器。從技術角度來講,只使用 JavaConfig 配置類來配置容器是可行的,但實際上很多人認為將JavaConfig 與 XML 混合匹配是理想的。
3、類型安全和重構友好。JavaConfig 提供了一種類型安全的方法來配置 Spring容器。由於 Java 5.0 對泛型的支持,現在可以按類型而不是按名稱檢索 bean,不需要任何強制轉換或基於字符串的查找。

 

Q:什么是YAML?

YAML是一種人類可讀的數據序列化語言。它通常用於配置文件
與屬性文件相比,如果我們想要在配置文件中添加復雜的屬性,YAML文件就更加結構化,而且更少混淆。可以看出YAML具有分層配置數據

 

Q:bootstrap.yml和application.yml有什么區別?

1、Spring Cloud 構建於 Spring Boot 之上,在 Spring Boot 中有兩種上下文,一種是 bootstrap,另外一種是 application。
2、application 配置文件這個容易理解,主要用於 Spring Boot 項目的自動化配置
3、bootstrap 是應用程序的父上下文,也就是說 bootstrap 加載優先於 applicaton
4、bootstrap 主要用於從額外的資源來加載配置信息,還可以在本地外部配置文件中解密屬性。
5、這兩個上下文共用一個環境,它是任何Spring應用程序的外部屬性的來源。
6、bootstrap 里面的屬性會優先加載,它們默認也不能被本地相同配置覆蓋。
7、boostrap 由父 ApplicationContext 加載,比 applicaton 優先加載
8、boostrap 里面的屬性不能被覆蓋

 

Q: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)

 

Q:Spring Boot 配置加載順序?

1、properties文件

2、YAML文件

3、系統環境變量

4、命令行參數

 

還有更多面試專題及java資料、筆記等可以添加微信:YDT939免費獲取

 

Q:如何使用Spring Boot實現異常處理?

SpringControllerAdvice提供了一種使用處理異常的非常有用的方法。通過實現一個 ControllerAdvice類,來處理控制器類拋出的所有異常。

 

Q: 如何重新加載 Spring Boot上的更改,而無需重新啟動服務器?

使用DEV工具來實現。
通過這種依賴關系,可以節省任何更改,嵌入式 tomcat將重新啟動。
使用Spring Boot有一個開發工具Dev Tools模塊,可以重新加載 Spring Boot上的更改,而無需重新啟動服務器。消除每次手動部署更改的需要。Spring Boot在發布它的第一個版本時沒有這個功能。該模塊將在生產環境中被禁用。它還提供H2數據庫控制台以更好地測試應用程序。

 

Q:Spring Boot中的監視器是什么?

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

 

Q:如何在自定義端口上運行 Spring Boot應用程序?

application.properties中指定端口serverport=8090

 

Q:Spring Boot監聽器流程?

1、通過app.addListeners注冊進入
2、初始化一個SpringApplicationRunListeners進行處理
3、從spring.factories中讀取監聽器處理類EventPublishingRunListener
4、通過createSpringFactoriesInstances創建監聽器處理類實例
5、調用監聽器listeners.starting()的方法來啟動。
6、底層把事件處理交給線程池去處理

 

Q:Spring Boot初始化環境變量流程?

1、調用prepareEnvironment方法去設置環境變量
2、接下來有三個方法getOrCreateEnvironmentconfigureEnvironmentenvironmentPrepared
3、getOrCreateEnvironment去初始化系統環境變量
4、configureEnvironment去初始化命令行參數
5、environmentPrepared當廣播到來的時候調用onApplicationEnvironmentPreparedEvent方法去使用postProcessEnvironment方法load ymlproperties變量

 

Q:Spring Boot掃描流程?

1、調用run方法中的refreshContext方法
2、用AbstractApplicationContext中的refresh方法
3、委托給invokeBeanFactoryPostProcessors去處理調用鏈
4、其中一個方法postProcessBeanDefinitionRegistry會去調用processConfigBeanDefinitions解析beandefinitions
5、在processConfigBeanDefinitions中有一個parse方法,其中有componentScanParser.parse的方法,這個方法會掃描當前路徑下所有Component組件

 

Q:如何在 Spring Boot中禁用 Actuator端點安全性?

默認情況下,所有敏感的HTTP端點都是安全的,只有具有 http ACTUATOR角色的用戶才能訪問它們。安全性是使用標准的 httpservletrequest. isuserinrole..isusernrole方法實施的。可以使用 management. security. enabled= false來禁用安全性。只有在執行機構端點在防火牆后訪問時,才建議禁用安全性。

 

Q:如何實現 Spring Boot應用程序的安全性?

使用 spring--startersecurityboot--依賴項,並且必須添加安全配置。配置類將必須擴展 WebSecurityConfigurerAdapter並覆蓋其方法。

 

Q:什么是 Spring Batch?

Spring Boot Batch提供可重用的函數,這些函數在處理大量記錄時非常重要;包括日志/跟蹤,事務管理,作業處理統計信息,作業重新啟動,跳過和資源管理。它還提供了更先進的技術服務和功能,通過優化和分區技術,可以實現極高批量和高性能批處理作業。簡單以及復雜的大批量批處理作業可以高度可擴展的方式利用框架處理重要大量的信息。

 

Q:Spring Boot 有哪幾種讀取配置的方式?

  • @PropertySource

  • @Value

  • @Environment

  • @ConfigurationPropertie

 

今天寫的這篇主要總結了SpringBoot相關的問題。還有更多面試專題及java資料、筆記等可以添加微信:YDT676免費獲取

 

Q:什么是SpringBoot?

用來簡化spring應用的初始搭建以及開發過程,使用特定的方式來進行配置(propertiesyml文件)創建獨立的spring引用程序 main方法運行,嵌入的Tomcat 無需部署war文件,簡化maven配置,自動配置spring添加對應功能starter自動化配置。

 

Q: Spring Boot、Spring MVC 和 Spring 有什么區別?

1、SpringSpring最重要的特征是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉。當我們恰當的使用 DI 或者是 IOC 的時候,我們可以開發松耦合應用。松耦合應用的單元測試可以很容易的進行。
2、Spring MVC提供了一種分離式的方法來開發 Web 應用。通過運用像DispatcherServeletMoudlAndViewViewResolver 等一些簡單的概念,開發 Web 應用將會變的非常簡單。
3、Spring 和 SpringMVC 的問題在於需要配置大量的參數。
4、Spring Boot 通過一個自動配置和啟動的項來目解決這個問題。為了更快的構建產品就緒應用程序,Spring Boot 提供了一些非功能性特征。

 

Q:Spring Boot 的核心注解是哪個?它主要由哪幾個注解組成的?

1、@SpringBootConfiguration:組合了 @Configuration 注解,實現配置文件的功能。
2、@EnableAutoConfiguration:打開自動配置的功能,也可以關閉某個自動配置的選項,如關閉數據源自動配置功能。
3、@ComponentScan:Spring組件掃描。

 

Q:什么是 JavaConfig?

1、面向對象的配置。由於配置被定義為 JavaConfig 中的類,因此用戶可以充分利用 Java 中的面向對象功能。一個配置類可以繼承另一個,重寫它的@Bean 方法等。
2、減少或消除 XML 配置。基於依賴注入原則的外化配置的好處已被證明。但是,許多開發人員不希望在 XML 和 Java 之間來回切換。JavaConfig 為開發人員提供了一種純 Java 方法來配置與 XML 配置概念相似的 Spring 容器。從技術角度來講,只使用 JavaConfig 配置類來配置容器是可行的,但實際上很多人認為將JavaConfig 與 XML 混合匹配是理想的。
3、類型安全和重構友好。JavaConfig 提供了一種類型安全的方法來配置 Spring容器。由於 Java 5.0 對泛型的支持,現在可以按類型而不是按名稱檢索 bean,不需要任何強制轉換或基於字符串的查找。

 

Q:什么是YAML?

YAML是一種人類可讀的數據序列化語言。它通常用於配置文件
與屬性文件相比,如果我們想要在配置文件中添加復雜的屬性,YAML文件就更加結構化,而且更少混淆。可以看出YAML具有分層配置數據

 

Q:bootstrap.yml和application.yml有什么區別?

1、Spring Cloud 構建於 Spring Boot 之上,在 Spring Boot 中有兩種上下文,一種是 bootstrap,另外一種是 application。
2、application 配置文件這個容易理解,主要用於 Spring Boot 項目的自動化配置
3、bootstrap 是應用程序的父上下文,也就是說 bootstrap 加載優先於 applicaton
4、bootstrap 主要用於從額外的資源來加載配置信息,還可以在本地外部配置文件中解密屬性。
5、這兩個上下文共用一個環境,它是任何Spring應用程序的外部屬性的來源。
6、bootstrap 里面的屬性會優先加載,它們默認也不能被本地相同配置覆蓋。
7、boostrap 由父 ApplicationContext 加載,比 applicaton 優先加載
8、boostrap 里面的屬性不能被覆蓋

 

Q: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)

 

Q:Spring Boot 配置加載順序?

1、properties文件

2、YAML文件

3、系統環境變量

4、命令行參數

 

還有更多面試專題及java資料、筆記等可以添加微信:YDT676免費獲取

 

Q:如何使用Spring Boot實現異常處理?

SpringControllerAdvice提供了一種使用處理異常的非常有用的方法。通過實現一個 ControllerAdvice類,來處理控制器類拋出的所有異常。

 

Q: 如何重新加載 Spring Boot上的更改,而無需重新啟動服務器?

使用DEV工具來實現。
通過這種依賴關系,可以節省任何更改,嵌入式 tomcat將重新啟動。
使用Spring Boot有一個開發工具Dev Tools模塊,可以重新加載 Spring Boot上的更改,而無需重新啟動服務器。消除每次手動部署更改的需要。Spring Boot在發布它的第一個版本時沒有這個功能。該模塊將在生產環境中被禁用。它還提供H2數據庫控制台以更好地測試應用程序。

 

Q:Spring Boot中的監視器是什么?

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

 

Q:如何在自定義端口上運行 Spring Boot應用程序?

application.properties中指定端口serverport=8090

 

Q:Spring Boot監聽器流程?

1、通過app.addListeners注冊進入
2、初始化一個SpringApplicationRunListeners進行處理
3、從spring.factories中讀取監聽器處理類EventPublishingRunListener
4、通過createSpringFactoriesInstances創建監聽器處理類實例
5、調用監聽器listeners.starting()的方法來啟動。
6、底層把事件處理交給線程池去處理

 

Q:Spring Boot初始化環境變量流程?

1、調用prepareEnvironment方法去設置環境變量
2、接下來有三個方法getOrCreateEnvironmentconfigureEnvironmentenvironmentPrepared
3、getOrCreateEnvironment去初始化系統環境變量
4、configureEnvironment去初始化命令行參數
5、environmentPrepared當廣播到來的時候調用onApplicationEnvironmentPreparedEvent方法去使用postProcessEnvironment方法load ymlproperties變量

 

Q:Spring Boot掃描流程?

1、調用run方法中的refreshContext方法
2、用AbstractApplicationContext中的refresh方法
3、委托給invokeBeanFactoryPostProcessors去處理調用鏈
4、其中一個方法postProcessBeanDefinitionRegistry會去調用processConfigBeanDefinitions解析beandefinitions
5、在processConfigBeanDefinitions中有一個parse方法,其中有componentScanParser.parse的方法,這個方法會掃描當前路徑下所有Component組件

 

Q:如何在 Spring Boot中禁用 Actuator端點安全性?

默認情況下,所有敏感的HTTP端點都是安全的,只有具有 http ACTUATOR角色的用戶才能訪問它們。安全性是使用標准的 httpservletrequest. isuserinrole..isusernrole方法實施的。可以使用 management. security. enabled= false來禁用安全性。只有在執行機構端點在防火牆后訪問時,才建議禁用安全性。

 

Q:如何實現 Spring Boot應用程序的安全性?

使用 spring--startersecurityboot--依賴項,並且必須添加安全配置。配置類將必須擴展 WebSecurityConfigurerAdapter並覆蓋其方法。

 

Q:什么是 Spring Batch?

Spring Boot Batch提供可重用的函數,這些函數在處理大量記錄時非常重要;包括日志/跟蹤,事務管理,作業處理統計信息,作業重新啟動,跳過和資源管理。它還提供了更先進的技術服務和功能,通過優化和分區技術,可以實現極高批量和高性能批處理作業。簡單以及復雜的大批量批處理作業可以高度可擴展的方式利用框架處理重要大量的信息。

 

Q:Spring Boot 有哪幾種讀取配置的方式?

  • @PropertySource

  • @Value

  • @Environment

  • @ConfigurationPropertie

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM