2020 Spring Boot 知識點(面試題)總結

目錄

 

1、什麼是Spring Boot?

2、爲什麼要用Spring Boot?(其實這麼問,人家就是讓你說說他的優點)

3、Spring 和 SpringBoot 以及spring mvc有什麼不同?

4、如何重新加載 Spring Boot 上的更改,而無需重新啓動服務器?

5、Spring Boot 的核心註解是哪個?它主要由哪幾個註解組成的?

6、運行 Spring Boot 有哪幾種方式?

7、Spring Boot 可以兼容老 Spring 項目嗎,如何做?(常識性問題)‘

8、Spring Boot開啓的兩種方式

9、Spring Boot 的配置文件有哪幾種格式?它們有什麼區別?

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

11、Spring Boot 的目錄結構是怎樣的?

12、如何創建Spring Boot項目

13、比較一下 Spring Security 和 Shiro 各自的優缺點 ?

14、你如何理解 Spring Boot 配置加載順序?

15、Spring Boot 如何定義多套不同環境配置?

16、Spring Boot 2.X 有什麼新特性?與 1.X 有什麼區別?

17、在spring boot項目中,我們如何連接 MySQL 外部數據庫?

18、Spring Boot 中如何實現定時任務 ?

19、什麼是 Spring Data ?

20、Spring Boot 中的監視器是什麼?

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

22、保護 Spring Boot 應用有哪些方法?

23、spring boot 項目如何實現跨域訪問

24、Spring Boot 自動配置原理是什麼?

25、RequestMapping 和 GetMapping 的不同之處在哪裏?

26 , 如何使用Spring Boot實現分頁和排序?

27、Spring Boot 的核心配置文件有哪幾個?它們的區別是什麼?


1、什麼是Spring Boot?

Spring Boot 是 Spring 開源組織下的子項目,是 Spring 組件一站式解決方案,主要是簡化了使用 Spring 的難度,簡省了繁重的配置,提供了各種啓動器,開發者能快速上手。

2、爲什麼要用Spring Boot?(其實這麼問,人家就是讓你說說他的優點)

  • 獨立運行,內嵌tomcat.

  • 簡化配置,因爲沒有 web.xml 文件。只需添加用@ Configuration 註釋的類,然後添加用@Bean 註釋的方法,Spring 將自動加載對象並像以前一樣對其進行管理。您甚至可以將@Autowired 添加到 bean 方法中,以使 Spring 自動裝入需要的依賴關係中。

  • 自動配置

  • 無代碼生成和XML配置

  • 應用監控

  • 上手容易,提升開發效率,爲 Spring 開發提供一個更快、更廣泛的入門體驗。

  • 避免大量的 Maven 導入和各種版本衝突。

3、Spring 和 SpringBoot 以及spring mvc有什麼不同?

Spring 框架提供多種特性使得 web 應用開發變得更簡便,包括依賴注入、數據綁定、切面編程、數據存取等等。

實際上,Spring 是 unopinionated(予以配置項多,傾向性弱) 的,Spring Boot 在平臺和庫的做法中更 opinionated ,使得我們更容易上手。

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

Spring 和 SpringMVC 的問題在於需要配置大量的參數。

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

4、如何重新加載 Spring Boot 上的更改,而無需重新啓動服務器?

通俗來講,也就是熱部署。在我們spring boot項目中添加一下熱部署的依賴即可。

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

其實還有另外一種熱部署的方法:也就是使用Spring Loaded。

5、Spring Boot 的核心註解是哪個?它主要由哪幾個註解組成的?

這個問題是作爲spring boot中的比較基礎的問題了。

啓動類上面的註解是@SpringBootApplication,它也是 Spring Boot 的核心註解 主要組合包含了以下 3 個註解: @SpringBootConfiguration:組合了 @Configuration 註解,實現配置文件的功能。

@EnableAutoConfiguration:打開自動配置的功能,也可以關閉某個自動配置的選項,如關閉數據源自動配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

@ComponentScan:Spring組件掃描。

這也是spring boot中最常用的組合註解。

6、運行 Spring Boot 有哪幾種方式?

打包用命令或者放到容器中運行(例如:打包:maven clean package,後面運行jar包即可)

用 Maven/ Gradle 插件運行

直接執行 main 方法運行 (直接運行spring boot的啓動類即可,main方法)

7、Spring Boot 可以兼容老 Spring 項目嗎,如何做?(常識性問題)‘

可以兼容,使用 @ImportResource 註解導入老 Spring 項目配置文件。

8、Spring Boot開啓的兩種方式

1. 繼承spring-boot-starter-parent項目

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.1.3.RELEASE</version>
</parent>

2. 導入spring-boot-dependencies項目依賴


       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-dependencies</artifactId>
           <version>2.1.3.RELEASE</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>

9、Spring Boot 的配置文件有哪幾種格式?它們有什麼區別?

.properties 和 .yml,它們的區別主要是書寫格式不同。其實我們使用IDEA這類常用的軟件創建Spring Boot項目時,基本上都是.properties格式的。

另外,.yml 格式不支持 @PropertySource 註解導入配置。

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

這塊我們直接在我們上邊9說到的配置文件中寫入一下內容即可:

server.port = 80

我們的Spring Boot項目默認的是8080端口。

11、Spring Boot 的目錄結構是怎樣的?

如下圖所示:我們後面要寫的所有代碼以及結構,都要在NewdemoApplication內,不能夠在他的外面。

12、如何創建Spring Boot項目

看我這個資源鏈接就可以了,裏面介紹的非常詳細,這個是當時要給學生講課我自己做的用到的課件。

https://download.csdn.net/download/qq_41790332/12348455

上面內鏈接好像得花積分。。。我放網盤上一個永久鏈接,沒法下載的化大家再私信我。

鏈接:https://pan.baidu.com/s/1VsG70Yt5NO8itkqmGgYLvg 
提取碼:tj2l

13、比較一下 Spring Security 和 Shiro 各自的優缺點 ?

由於 Spring Boot 官方提供了大量的非常方便的開箱即用的 Starter ,包括 Spring Security 的 Starter ,使得在 Spring Boot 中使用 Spring Security 變得更加容易,甚至只需要添加一個依賴就可以保護所有的接口,所以,如果是 Spring Boot 項目,一般選擇 Spring Security 。

  1. Spring Security 是一個重量級的安全管理框架;Shiro 則是一個輕量級的安全管理框架
  2. Spring Security 概念複雜,配置繁瑣;Shiro 概念簡單、配置簡單
  3. Spring Security 功能強大;Shiro 功能簡單

14、你如何理解 Spring Boot 配置加載順序?

在 Spring Boot 裏面,可以使用以下幾種方式來加載配置。

1)properties文件;

2)YAML文件;

3)系統環境變量;

4)命令行參數

15、Spring Boot 如何定義多套不同環境配置?

applcation.properties
 
application-dev.properties
 
application-test.properties
 
application-prod.properties

16、Spring Boot 2.X 有什麼新特性?與 1.X 有什麼區別?

  • 配置變更

  • JDK 版本升級

  • 第三方類庫升級

  • 響應式 Spring 編程支持

  • HTTP/2 支持

  • 配置屬性綁定

  • 更多改進與加強

17、在spring boot項目中,我們如何連接 MySQL 外部數據庫?

1、在pom.xml文件中添加以下依賴

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

2、配置 application.properties

spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456 

這樣之後重啓項目即可。

18、Spring Boot 中如何實現定時任務 ?

看我寫的代碼即可:

@Component
public class Jobs {

    @Autowired
    private TotalModuleService totalModuleService;

    public final static long ONE_Minute =  60 * 1000 * 60 * 24 *15  ;


    /**
     *  * 第一位,表示秒,取值0-59
     * * 第二位,表示分,取值0-59
     * * 第三位,表示小時,取值0-23
     * * 第四位,日期天/日,取值1-31
     * * 第五位,日期月份,取值1-12
     * * 第六位,星期,取值1-7,星期一,星期二...,注:不是第1周,第二週的意思
     *           另外:1表示星期天,2表示星期一。
     * * 第7爲,年份,可以留空,取值1970-2099
     * 破解碼:$2a$10$8fnlmzf3SJHkr5B97ny1DesTiWL2AzdqvJQw5eKHdDpX1O997qPG2
     */
    @Scheduled(cron="0 0 0 25 3 ? ")
    public void cronJob(){

        job();

    }

19、什麼是 Spring Data ?

Spring Data 是 Spring 的一個子項目。用於簡化數據庫訪問,支持NoSQL 和 關係數據存儲。其主要目標是使數據庫的訪問變得方便快捷。Spring Data 具有如下特點:

SpringData 項目支持 NoSQL 存儲:

MongoDB (文檔數據庫)
Neo4j(圖形數據庫)
Redis(鍵/值存儲)
Hbase(列族數據庫)
SpringData 項目所支持的關係數據存儲技術:

JDBC
JPA
Spring Data Jpa 致力於減少數據訪問層 (DAO) 的開發量. 開發者唯一要做的,就是聲明持久層的接口,其他都交給 Spring Data JPA 來幫你完成。Spring Data JPA 通過規範方法的名字,根據符合規範的名字來確定方法需要實現什麼樣的邏輯。

JPA有關的信息,後面我會專門寫一篇文章來介紹。我前面也是寫過相對應的博客的。

https://blog.csdn.net/qq_41790332/article/details/103486859

20、Spring Boot 中的監視器是什麼?

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

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

Spring Boot 也提供了其它的啓動器項目包括,包括用於開發特定類型應用程序的典型依賴項。

spring-boot-starter-web-services - SOAP Web Services

spring-boot-starter-web - Web 和 RESTful 應用程序

spring-boot-starter-test - 單元測試和集成測試

spring-boot-starter-jdbc - 傳統的 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 服務

還有很多,可以去創建項目的時候去看看。

22、保護 Spring Boot 應用有哪些方法?

  • 在生產中使用HTTPS

  • 使用Snyk檢查你的依賴關係

  • 升級到最新版本

  • 啓用CSRF保護

  • 使用內容安全策略防止XSS攻擊

23、spring boot 項目如何實現跨域訪問

直接上代碼:

@Configuration
public class CorsConfig {
	private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 允許任何域名使用
        corsConfiguration.addAllowedHeader("*"); // 允許任何頭
        corsConfiguration.addAllowedMethod("*"); // 允許任何方法(post、get等)
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 對接口配置跨域設置
        return new CorsFilter(source);
    }
}

可以再看看@CorsRegistry這個註解。

24、Spring Boot 自動配置原理是什麼?

註解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自動配置的核心,

@EnableAutoConfiguration 給容器導入META-INF/spring.factories 裏定義的自動配置類。

篩選有效的自動配置類。

每一個自動配置類結合對應的 xxxProperties.java 讀取配置文件進行自動配置功能

25、RequestMapping 和 GetMapping 的不同之處在哪裏?

RequestMapping 具有類屬性的,可以進行 GET,POST,PUT 或者其它的註釋中具有的請求方法。

GetMapping 是 GET 請求方法中的一個特例。它只是 ResquestMapping 的一個延伸,目的是爲了提高清晰度。

其實還有PostMapping,PutMapping等等都是這個意思。

26 , 如何使用Spring Boot實現分頁和排序?

1、使用spring data jpa 自帶的分頁org.springframework.data.domain.Pageable

2、採用其他框架裏面的內嵌分頁源碼進行分頁,例如mybatis

27、Spring Boot 的核心配置文件有哪幾個?它們的區別是什麼?

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。

application 配置文件這個容易理解,主要用於 Spring Boot 項目的自動化配置。

bootstrap 配置文件有以下幾個應用場景。

  • 使用 Spring Cloud Config 配置中心時,這時需要在 bootstrap 配置文件中添加連接到配置中心的配置屬性來加載外部配置中心的配置信息;

  • 一些固定的不能被覆蓋的屬性;

  • 一些加密/解密的場景;

整理的遺漏的地方還請大家多多指教。更多詳細的信息請看:https://blog.csdn.net/qq_41790332/article/details/105254057

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章