17個經典的Spring面試問答,你必須知道

Q1、什麼是Spring Framework?

Spring是Java企業版應用程序開發中使用最廣泛的框架.Spring的核心功能可用於開發任何Java應用程序。

我們可以使用它的擴展來在Java EE平臺上構建各種Web應用程序,或者我們可以在簡單的獨立應用程序中使用它的依賴注入。

Q2、使用Spring有什麼好處?

Spring旨在簡化Java EE開發。以下是使用它的優點:

  • 輕量級: 在開發中使用框架開銷很小
  • 控制反轉(IoC): Spring容器負責處理各種對象的依賴關係,而不是創建或查找依賴對象
  • 面向切面編程(AOP): Spring支持AOP將業務邏輯與系統服務分開
  • IoC容器: 它管理Spring Bean生命週期和項目特定配置
  • MVC框架: 用於創建Web應用程序或RESTful Web服務,能夠返回XML / JSON響應
  • 事務管理: 通過使用Java註釋或Spring Bean XML配置文件減少JDBC操作
  • 異常處理: Spring提供了一個方便的API,用於將特定於技術的異常轉換爲未經檢查的異常

Q3、你知道哪些Spring子項目?簡要描述一下。

  • Core - 提供框架基本部分的關鍵模塊,如IoC或DI
  • JDBC - 此模塊啓用JDBC抽象層,無需對特定供應商數據庫執行JDBC編碼
  • ORM集成 - 爲流行的對象關係映射API提供集成層,例如JPA,JDO和Hibernate
  • Web - 面向Web的集成模塊,提供多部分文件上傳,Servlet偵聽器和麪向Web的應用程序上下文功能
  • MVC框架 - 實現模型視圖控制器設計模式的Web模塊
  • AOP模塊 - 面向切面的編程實現,允許定義乾淨的方法 - 攔截器和切入點

Q4、什麼是依賴注入?

依賴注入是控制反轉(IoC)的一個方面,它是一個通用概念,表明您不是手動創建對象,而是描述應如何創建它們。如果需要,IoC容器將實例化所需的類。

Q5、我們如何在Spring中注入Bean?

存在一些不同的選擇:

  • Setter注入
  • 構造函數注入
  • 變量注入

可以使用XML文件或註釋完成配置。

Q6、注入Bean的最佳方法是什麼?爲什麼?

建議的方法是使用構造函數參數用於強制依賴項,將setter用於可選依賴項。構造函數注入允許將值注入不可變字段並使測試更容易。

Q7、BeanFactory 和 ApplicationContext 的有什麼區別?

BeanFactory 是一個表示提供和管理bean實例的容器的接口。默認實現在調用 getBean() 時實例化bean 。

ApplicationContext 是一個接口,表示容納應用程序中所有信息,元數據和bean的容器。它還擴展了 BeanFactory 接口,但默認實現在應用程序啓動時立馬實例化bean。可以爲單個bean覆蓋此行爲。

Q8、什麼是Spring Bean?

Spring Bean是由Spring IoC容器初始化的Java對象。

Q9、Spring框架中的默認Bean範圍是什麼?

默認情況下,Spring Bean初始化爲單例 。

Q10、如何定義bean的範圍?

要設置Spring Bean的範圍,我們可以在XML配置文件中使用 Scope 註釋或“Scope”屬性。

有五個支持的範圍:

  • singleton
  • prototype
  • request
  • session
  • global-session

Q11、單例Bean是線程安全的嗎?

不,單例bean不是線程安全的,因爲線程安全是關於執行的,而單例是一種專注於創建的設計模式。線程安全僅取決於bean實現本身。

Q12、SpringBean生命週期是什麼樣的?

首先,需要基於Java或XML bean定義來實例化Spring bean。可能還需要執行一些初始化以使其進入可用狀態。之後,當不再需要bean時,它將從IoC容器中刪除。

所有初始化方法的整個循環顯示在下圖上:
Bean生命週期

Q13、什麼是Spring Java註解配置?

這是以類型安全的方式配置基於Spring的應用程序的方法之一。它是基於XML的配置的替代方案。

Q14、我們可以在一個項目中擁有多個Spring配置文件嗎?

可以,在大型項目中,建議使用多個Spring配置以提高可維護性和模塊性。

您可以加載多個Java註解的配置:

@Configuration
@Import({MainConfig.class, SchedulerConfig.class})
public class AppConfig {

或者加載一個包含所有其他配置的XML文件:

ApplicationContext context = new ClassPathXmlApplicationContext("spring-all.xml");

在XML文件中你也可以包含其它配置文件:

<import resource="main.xml"/>
<import resource="scheduler.xml"/>

Q15、什麼是Spring Security?

Spring Security是Spring框架的一個獨立模塊,專注於在Java應用程序中提供身份驗證和授權方法。它還會處理大多數常見的安全漏洞,例如CSRF攻擊。

要在Web應用程序中使用Spring Security,您可以開始使用簡單的註解:@EnableWebSecurity。

Q16、什麼是Spring Boot?

Spring Boot是一個項目,它提供了一組預先配置的框架,以減少用戶的配置,以便您可以使用最少量的代碼啓動並運行Spring應用程序。

Q17、列舉一些Spring Framework中使用的設計模式?

  • 單例模式: 單例範圍的bean
  • 工廠模式: Bean工廠類
  • 原型模式: 原型範圍的bean
  • 適配器模式: Spring Web和Spring MVC
  • 代理模式: 面向Spring Aspect的編程支持
  • 模板方法模式: JdbcTemplate、HibernateTemplate 等。
  • 前端控制器模式: Spring MVC DispatcherServlet
  • 數據訪問對象: Spring DAO支持
  • 模型視圖控制器: Spring MVC

“不積跬步,無以至千里”,希望未來的你能:有夢爲馬 隨處可棲!加油,少年!


關注公衆號:「Java 知己」,每天更新Java知識哦,期待你的到來!

  • 發送「1024」,免費領取 30 本經典編程書籍。
  • 發送「Group」,與 10 萬程序員一起進步。
  • 發送「面試」,領取BATJ面試資料、面試視頻攻略。
  • 發送「JavaEE 實戰」,領取《JavaEE 實戰》系列視頻教程。
  • 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。

在這裏插入圖片描述

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