自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

35道SpringBoot面試題及答案,面試常被問到!

開發(fā) 后端
Spring Boot 是微服務中 Java 框架. 我們建議你能夠成為一名 Spring Boot 的專家。本文精選了三十五個常見的Spring Boot知識點,祝你一臂之力!

[[265319]]

Spring Boot 是微服務中 Java 框架. 我們建議你能夠成為一名 Spring Boot 的專家。本文精選了三十五個常見的Spring Boot知識點,祝你一臂之力!

問題一

Spring Boot、Spring MVC 和 Spring 有什么區(qū)別?

1、Spring

Spring最重要的特征是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉。

當我們恰當?shù)氖褂?DI 或者是 IOC 的時候,我們可以開發(fā)松耦合應用。松耦合應用的單元測試可以很容易的進行。

2、Spring MVC

Spring MVC 提供了一種分離式的方法來開發(fā) Web 應用。通過運用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些簡單的概念,開發(fā) Web 應用將會變的非常簡單。

3、SpringBoot

Spring 和 SpringMVC 的問題在于需要配置大量的參數(shù)。

Spring Boot 通過一個自動配置和啟動的項來目解決這個問題。為了更快的構建產品就緒應用程序,Spring Boot 提供了一些非功能性特征。

問題二

什么是自動配置?

Spring 和 SpringMVC 的問題在于需要配置大量的參數(shù)。

我們能否帶來更多的智能?當一個 MVC JAR 添加到應用程序中的時候,我們能否自動配置一些 beans?

Spring 查看(CLASSPATH 上可用的框架)已存在的應用程序的配置。在此基礎上,Spring Boot 提供了配置應用程序和框架所需要的基本配置。這就是自動配置。

問題三

什么是 Spring Boot Stater ?

啟動器是一套方便的依賴沒描述符,它可以放在自己的程序中。你可以一站式的獲取你所需要的 Spring 和相關技術,而不需要依賴描述符的通過示例代碼搜索和復制黏貼的負載。

例如,如果你想使用 Sping 和 JPA 訪問數(shù)據(jù)庫,只需要你的項目包含 spring-boot-starter-data-jpa 依賴項,你就可以進行。 

問題四

你能否舉一個例子來解釋更多 Staters 的內容?

讓我們來思考一個 Stater 的例子 -Spring Boot Stater Web。

如果你想開發(fā)一個 web 應用程序或者是公開 REST 服務的應用程序。Spring Boot Start Web 是不錯的選擇。讓我們使用 Spring Initializr 創(chuàng)建一個 Spring Boot Start Web 的快速項目。

Spring Boot Start Web 的依賴項

下面的截圖是添加進我們應用程序的不同的依賴項

依賴項可以被分為:

  •  Spring - core,beans,context,aop
  •  Web MVC - (Spring MVC)
  •  Jackson - for JSON Binding
  •  Validation - Hibernate,Validation API
  •  Enbedded Servlet Container - Tomcat
  •  Logging - logback,slf4j

任何經(jīng)典的 Web 應用程序都會使用所有這些依賴項。Spring Boot Starter Web 預先打包了這些依賴項。

作為一個開發(fā)者,我不需要再擔心這些依賴項和它們的兼容版本。

問題五

Spring Boot 還提供了其它的哪些 Starter Project Options?

Spring Boot 也提供了其它的啟動器項目包括,包括用于開發(fā)特定類型應用程序的典型依賴項。

  •  spring-boot-starter-web-services - SOAP Web Services;
  •  spring-boot-starter-web - Web 和 RESTful 應用程序;
  •  spring-boot-starter-test - 單元測試和集成測試;
  •  spring-boot-starter-jdbc - 傳統(tǒng)的 JDBC;
  •  spring-boot-starter-hateoas - 為服務添加 HATEOAS 功能;
  •  spring-boot-starter-security - 使用 SpringSecurity 進行身份驗證和授權;
  •  spring-boot-starter-data-jpa - 帶有 Hibeernate 的 Spring Data JPA;
  •  spring-boot-starter-data-rest - 使用 Spring Data REST 公布簡單的 REST 服務;

問題六

Spring 是如何快速創(chuàng)建產品就緒應用程序的?

Spring Boot 致力于快速產品就緒應用程序。為此,它提供了一些譬如高速緩存,日志記錄,監(jiān)控和嵌入式服務器等開箱即用的非功能性特征。

spring-boot-starter-actuator - 使用一些如監(jiān)控和跟蹤應用的高級功能

spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat - 選擇您的特定嵌入式 Servlet 容器

spring-boot-starter-logging - 使用 logback 進行日志記錄

spring-boot-starter-cache - 啟用 Spring Framework 的緩存支持

###Spring2 和 Spring5 所需要的 Java 版本是什么?

Spring Boot 2.0 需要 Java8 或者更新的版本。Java6 和 Java7 已經(jīng)不再支持。

推薦閱讀:

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0.0-M1-Release-Notes

問題七

創(chuàng)建一個 Spring Boot Project 的最簡單的方法是什么?

Spring Initializr是啟動 Spring Boot Projects 的一個很好的工具。

就像上圖中所展示的一樣,我們需要做一下幾步:

  •  登錄 Spring Initializr,按照以下方式進行選擇:
  •  選擇 com.in28minutes.springboot 為組
  •  選擇 studet-services 為組件
  •  選擇下面的依賴項
  •  Web
  •  Actuator
  •  DevTools
  •   點擊生 GenerateProject
  •  將項目導入 Eclipse。文件 - 導入 - 現(xiàn)有的 Maven 項目

問題八

Spring Initializr 是創(chuàng)建 Spring Boot Projects 僅有的方法嗎?

不是的。

Spring Initiatlizr 讓創(chuàng)建 Spring Boot 項目變的很容易,但是,你也可以通過設置一個 maven 項目并添加正確的依賴項來開始一個項目。

在我們的 Spring 課程中,我們使用兩種方法來創(chuàng)建項目。

你可以選擇 start.spring.io 。

另外一種方法是在項目的標題為“Basic Web Application”處進行手動設置。

手動設置一個 maven 項目

這里有幾個重要的步驟:

  •  在 Eclipse 中,使用文件 - 新建 Maven 項目來創(chuàng)建一個新項目
  •  添加依賴項。
  •  添加 maven 插件。
  •  添加 Spring Boot 應用程序類。

到這里,準備工作已經(jīng)做好!

問題九

為什么我們需要 spring-boot-maven-plugin?

spring-boot-maven-plugin 提供了一些像 jar 一樣打包或者運行應用程序的命令。

  •  spring-boot:run 運行你的 SpringBooty 應用程序。
  •  spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可執(zhí)行
  •  spring-boot:start 和 spring-boot:stop 管理 Spring Boot 應用程序的生命周期(也可以說是為了集成測試)。
  •  spring-boot:build-info 生成執(zhí)行器可以使用的構造信息。

問題十

如何使用 SpringBoot 自動重裝我的應用程序?

使用 Spring Boot 開發(fā)工具。

把 Spring Boot 開發(fā)工具添加進入你的項目是簡單的。

把下面的依賴項添加至你的 Spring Boot Project pom.xml 中

重啟應用程序,然后就可以了。

同樣的,如果你想自動裝載頁面,有可以看看 FiveReload

在我測試的時候,發(fā)現(xiàn)了 LiveReload 漏洞,如果你測試時也發(fā)現(xiàn)了,請一定要告訴我們。

問題十一

什么是嵌入式服務器?我們?yōu)槭裁匆褂们度胧椒掌髂?

思考一下在你的虛擬機上部署應用程序需要些什么。

: 安裝 Java

第二部: 安裝 Web 或者是應用程序的服務器(Tomat/Wbesphere/Weblogic 等等)

第三部: 部署應用程序 war 包

如果我們想簡化這些步驟,應該如何做呢?

讓我們來思考如何使服務器成為應用程序的一部分?

你只需要一個安裝了 Java 的虛擬機,就可以直接在上面部署應用程序了,

是不是很爽?

這個想法是嵌入式服務器的起源。

當我們創(chuàng)建一個可以部署的應用程序的時候,我們將會把服務器(例如,tomcat)嵌入到可部署的服務器中。

例如,對于一個 Spring Boot 應用程序來說,你可以生成一個包含 Embedded Tomcat 的應用程序 jar。你就可以想運行正常 Java 應用程序一樣來運行 web 應用程序了。

嵌入式服務器就是我們的可執(zhí)行單元包含服務器的二進制文件(例如,tomcat.jar)。

問題十二

如何在 Spring Boot 中添加通用的 JS 代碼?

在源文件夾下,創(chuàng)建一個名為 static 的文件夾。然后,你可以把你的靜態(tài)的內容放在這里面。

例如,myapp.js 的路徑是 resources\static\js\myapp.js

你可以參考它在 jsp 中的使用方法:

錯誤:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.

該如何來修復這個錯誤呢?

兩種方法:

方法 1:關閉安全驗證

application.properties   

  1. management.security.enabled:FALSE 

方法二:在日志中搜索密碼并傳遞至請求標頭中

問題十三

什么是 Spring Data?

來自://projects.spring.io/spring- data/

Spring Data 的使命是在保證底層數(shù)據(jù)存儲特殊性的前提下,為數(shù)據(jù)訪問提供一個熟悉的,一致性的,基于 Spring 的編程模型。這使得使用數(shù)據(jù)訪問技術,關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫,map-reduce 框架以及基于云的數(shù)據(jù)服務變得很容易。

為了讓它更簡單一些,Spring Data 提供了不受底層數(shù)據(jù)源限制的 Abstractions 接口。

下面來舉一個例子:

你可以定義一簡單的庫,用來插入,更新,刪除和檢索事項,而不需要編寫大量的代碼。

問題十四

什么是 Spring Data REST?

Spring Data TEST 可以用來發(fā)布關于 Spring 數(shù)據(jù)庫的 HATEOAS RESTful 資源。

下面是一個使用 JPA 的例子:

不需要寫太多代碼,我們可以發(fā)布關于 Spring 數(shù)據(jù)庫的 RESTful API。

下面展示的是一些關于 TEST 服務器的例子

POST:

  •  URL:http://localhost:8080/todos
  •  Use Header:Content-Type:Type:application/json
  •  Request Content

代碼如下:

響應內容:

響應包含新創(chuàng)建資源的 href。

問題十五

path=”users”, collectionResourceRel=”users” 如何與 Spring Data Rest 一起使用?

  •  path- 這個資源要導出的路徑段。
  •  collectionResourceRel- 生成指向集合資源的鏈接時使用的 rel 值。在生成 HATEOAS 鏈接時使用。

問題十六

當 Spring Boot 應用程序作為 Java 應用程序運行時,后臺會發(fā)生什么?

如果你使用 Eclipse IDE,Eclipse maven 插件確保依賴項或者類文件的改變一經(jīng)添加,就會被編譯并在目標文件中準備好!在這之后,就和其它的 Java 應用程序一樣了。

當你啟動 java 應用程序的時候,spring boot 自動配置文件就會魔法般的啟用了。

  •  當 Spring Boot 應用程序檢測到你正在開發(fā)一個 web 應用程序的時候,它就會啟動 tomcat。

問題十七

我們能否在 spring-boot-starter-web 中用 jetty 代替 tomcat?

在 spring-boot-starter-web 移除現(xiàn)有的依賴項,并把下面這些添加進去。

問題十八

如何使用 Spring Boot 生成一個 WAR 文件?

推薦閱讀:

下面有 spring 說明文檔直接的鏈接地址:

問題十九

如何使用 Spring Boot 部署到不同的服務器?

你需要做下面兩個步驟:

  •  在一個項目中生成一個 war 文件。
  •  將它部署到你最喜歡的服務器(websphere 或者 Weblogic 或者 Tomcat and so on)。

這本入門指南應該有所幫助:

https://spring.io/guides/gs/convert-jar-to-war/

第二步:取決于你的服務器。

問題二十

RequestMapping 和 GetMapping 的不同之處在哪里?

  •  RequestMapping 具有類屬性的,可以進行 GET,POST,PUT 或者其它的注釋中具有的請求方法。
  •  GetMapping 是 GET 請求方法中的一個特例。它只是 ResquestMapping 的一個延伸,目的是為了提高清晰度。

問題二十一

為什么我們不建議在實際的應用程序中使用 Spring Data Rest?

我們認為 Spring Data Rest 很適合快速原型制造!在大型應用程序中使用需要謹慎。

通過 Spring Data REST 你可以把你的數(shù)據(jù)實體作為 RESTful 服務直接發(fā)布。

當你設計 RESTful 服務器的時候,實踐表明,你的接口應該考慮到兩件重要的事情:

  •  你的模型范圍。
  •  你的客戶。

通過 With Spring Data REST,你不需要再考慮這兩個方面,只需要作為 TEST 服務發(fā)布實體。

這就是為什么我們建議使用 Spring Data Rest 在快速原型構造上面,或者作為項目的初始解決方法。對于完整演變項目來說,這并不是一個好的注意。

問題二十二

在 Spring Initializer 中,如何改變一個項目的包名字?

好消息是你可以定制它。點擊鏈接“轉到完整版本”。你可以配置你想要修改的包名稱!

問題二十三

可以配置 application.propertierde 的完整的屬性列表在哪里可以找到?

這里是完整的指南:

問題二十四

JPA 和 Hibernate 有哪些區(qū)別?

簡而言之

  •  JPA 是一個規(guī)范或者接口
  •  Hibernate 是 JPA 的一個實現(xiàn)

當我們使用 JPA 的時候,我們使用 javax.persistence 包中的注釋和接口時,不需要使用 hibernate 的導入包。

我們建議使用 JPA 注釋,因為哦我們沒有將其綁定到 Hibernate 作為實現(xiàn)。后來(我知道 - 小于百分之一的幾率),我們可以使用另一種 JPA 實現(xiàn)。

問題二十五

業(yè)務邊界應該從哪一層開始?

我們建議在服務層管理義務。商業(yè)業(yè)務邏輯在商業(yè)層或者服務層,與此同時,你想要執(zhí)行的業(yè)務管理也在該層。

問題二十六

使用 Spring Boot 啟動連接到內存數(shù)據(jù)庫 H2 的 JPA 應用程序需要哪些依賴項?

在 Spring Boot 項目中,當你確保下面的依賴項都在類路里面的時候,你可以加載 H2 控制臺。

  •  web 啟動器
  •  h2
  •  jpa 數(shù)據(jù)啟動器

其它的依賴項在下面:

需要注意的一些地方:

  •  一個內部數(shù)據(jù)內存只在應用程序執(zhí)行期間存在。這是學習框架的有效方式。
  •  這不是你希望的真是世界應用程序的方式。
  •  在問題“如何連接一個外部數(shù)據(jù)庫?”中,我們解釋了如何連接一個你所選擇的數(shù)據(jù)庫。

問題二十七

如何不通過任何配置來選擇 Hibernate 作為 JPA 的默認實現(xiàn)?

因為 Spring Boot 是自動配置的。

下面是我們添加的依賴項:

spring-boot-stater-data-jpa 對于 Hibernate 和 JPA 有過渡依賴性。

當 Spring Boot 在類路徑中檢測到 Hibernate 中,將會自動配置它為默認的 JPA 實現(xiàn)。

問題二十八

指定的數(shù)據(jù)庫連接信息在哪里?它是如何知道自動連接至 H2 的?

這就是 Spring Boot 自動配置的魔力。

來自:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html

Spring Boot auto-configuration 試圖自動配置你已經(jīng)添加的基于 jar 依賴項的 Spring 應用程序。比如說,如果 HSQLDBis 存在你的類路徑中,并且,數(shù)據(jù)庫連接 bean 還沒有手動配置,那么我們可以自動配置一個內存數(shù)據(jù)庫。

進一步的閱讀:

http://www.springboottutorial.com/spring-boot-auto-configuration

問題二十九

我們如何連接一個像 MySQL 或者Orcale 一樣的外部數(shù)據(jù)庫?

讓我們以 MySQL 為例來思考這個問題:

- 把 mysql 連接器的依賴項添加至 pom.xml

第二步 - 從 pom.xml 中移除 H2 的依賴項

或者至少把它作為測試的范圍。

第三步 - 安裝你的 MySQL 數(shù)據(jù)庫

更多的來看看這里 -https://github.com/in28minutes/jpa-with-hibernate#installing-and-setting-up-mysql

第四步 - 配置你的 MySQL 數(shù)據(jù)庫連接

配置 application.properties 

  1. spring.jpa.hibernate.ddl-auto=none spring.datasource.url=jdbc:mysql://localhost:3306/todo_example spring.datasource.username=todouser spring.datasource.password=YOUR_PASSWORD    

第五步 - 重新啟動,你就準備好了!

就是這么簡單!

問題三十

Spring Boot 配置的默認 H2 數(shù)據(jù)庫的名字是上面?為什么默認的數(shù)據(jù)庫名字是 testdb?

在 application.properties 里面,列出了所有的默認值

找到下面的屬性 

  1. # Name of the datasource.  
  2.   spring.datasource.name=testdb  

如果你使用了 H2 內部存儲數(shù)據(jù)庫,它里面確定了 Spring Boot 用來安裝你的 H2 數(shù)據(jù)庫的名字。

問題三十一

如果 H2 不在類路徑里面,會出現(xiàn)上面情況?

將會報下面的錯誤   

  1. Cannot determine embedded database driver class for database type NONE 

把 H2 添加至 pom.xml 中,然后重啟你的服務器

問題三十二

你能否舉一個以 ReadOnly 為事務管理的例子?

  •  當你從數(shù)據(jù)庫讀取內容的時候,你想把事物中的用戶描述或者是其它描述設置為只讀模式,以便于 Hebernate 不需要再次檢查實體的變化。這是非常高效的。

問題三十三

發(fā)布 Spring Boot 用戶應用程序自定義配置的方法是什么?

@Value 的問題在于,您可以通過應用程序分配你配置值。更好的操作是采取集中的方法。

你可以使用 @ConfigurationProperties 定義一個配置組件。

你可以在 application.properties 中配置參數(shù)。 

  1. basic.value: true   
  2.   basic.message: Dynamic Message   
  3.   basic.number: 100 

問題三十四

配置文件的需求是什么?

企業(yè)應用程序的開發(fā)是復雜的,你需要混合的環(huán)境:

  •  Dev
  •  QA
  •  Stage
  •  Production

在每個環(huán)境中,你想要不同的應用程序配置。

配置文件有助于在不同的環(huán)境中進行不同的應用程序配置。

Spring 和 Spring Boot 提供了你可以制定的功能。

  •  不同配置文件中,不同環(huán)境的配置是什么?
  •  為一個制定的環(huán)境設置活動的配置文件。

Spring Boot 將會根據(jù)特定環(huán)境中設置的活動配置文件來選擇應用程序的配置。

問題三十五

如何使用配置文件通過 Spring Boot 配置特定環(huán)境的配置?

配置文件不是設別環(huán)境的關鍵。

在下面的例子中,我們將會用到兩個配置文件

  •  dev
  •  prod

缺省的應用程序配置在 application.properties 中。讓我們來看下面的例子:

application.properties   

  1. basic.valuetrue   
  2.    basic.messageDynamic Message   
  3.    basic.number100 

我們想要為 dev 文件自定義 application.properties 屬性。我們需要創(chuàng)建一個名為 application-dev.properties 的文件,并且重寫我們想要自定義的屬性。

application-dev.properties   

  1. basic.message: Dynamic Message in DEV 

一旦你特定配置了配置文件,你需要在環(huán)境中設定一個活動的配置文件。

有多種方法可以做到這一點:

  •  在 VM 參數(shù)中使用 Dspring.profiles.active=prod
  •  在 application.properties 中使用 spring.profiles.active=prod

 

 

責任編輯:龐桂玉 來源: java版web項目
相關推薦

2022-08-12 09:35:36

JavaScript面試

2024-01-01 15:30:59

JavaScriptWeb 應用程序開發(fā)

2018-02-25 16:35:32

前端CSS面試題

2017-09-25 10:00:18

Hadoop面試題答案解析

2009-02-16 13:03:43

華為面試

2024-06-04 14:52:28

2009-06-16 13:41:19

Hibernate面試Hibernate面試

2021-10-27 11:00:30

C++語言面試

2023-11-09 16:13:00

TypeScript前端

2020-08-31 12:20:07

Python面試題代碼

2023-09-26 22:19:36

Java限流器

2021-05-08 14:20:27

Redis面試數(shù)據(jù)庫

2010-11-26 10:53:29

戴爾

2023-11-27 16:11:14

Web 開發(fā)HTML

2021-03-19 11:08:27

開發(fā)技能代碼

2024-02-26 15:35:44

2024-04-15 08:34:43

2024-04-28 08:23:18

2020-05-14 08:13:56

JDK命令Java

2023-08-27 15:57:28

前端開發(fā)
點贊
收藏

51CTO技術棧公眾號