17個經典的Spring面試問答

Q一、什麼是Spring Framework?

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

咱們可使用它的擴展來在Java EE平臺上構建各類Web應用程序,或者咱們能夠在簡單的獨立應用程序中使用它的依賴注入。前端

Q二、使用Spring有什麼好處?

Spring旨在簡化Java EE開發。如下是使用它的優勢:java

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

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

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

Q四、什麼是依賴注入?

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

Q五、咱們如何在Spring中注入Bean?

存在一些不一樣的選擇:面試

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

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

Q六、注入Bean的最佳方法是什麼?爲何?

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

Q七、BeanFactory 和 ApplicationContext 的有什麼區別?

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

ApplicationContext 是一個接口,表示容納應用程序中全部信息,元數據和bean的容器。它還擴展了 BeanFactory 接口,但默認實如今應用程序啓動時立馬實例化bean。能夠爲單個bean覆蓋此行爲。編程

Q八、什麼是Spring Bean?

Spring Bean是由Spring IoC容器初始化的Java對象。設計模式

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

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

Q十、如何定義bean的範圍?

要設置Spring Bean的範圍,咱們能夠在XML配置文件中使用 Scope 註釋或「Scope」屬性。

有五個支持的範圍:

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

Q十一、單例Bean是線程安全的嗎?

不,單例bean不是線程安全的,由於線程安全是關於執行的,而單例是一種專一於建立的設計模式。線程安全僅取決於bean實現自己。

Q十二、SpringBean生命週期是什麼樣的?

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

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

Q1三、什麼是Spring Java註解配置?

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

Q1四、咱們能夠在一個項目中擁有多個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"/>

Q1五、什麼是Spring Security?

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

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

Q1六、什麼是Spring Boot?

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

Q1七、列舉一些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 實戰》系列視頻教程。
  • 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。

原文出處:https://www.cnblogs.com/java-friend/p/11547860.html

相關文章
相關標籤/搜索