Java大型互聯網-探討spring框架你不知道的祕密面試題以及答案

引言

Spring是一個開放源代碼的設計層面框架,他解決的是業務邏輯層和其他各層的鬆耦合問題,因此它將面向接口的編程思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson創建。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。

什麼是spring?

Spring 是個java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴展是針對構建J2EE平臺的web應用。Spring 框架目標是簡化Java企業級應用開發,並通過POJO為基礎的編程模型促進良好的編程習慣。

使用Spring框架的好處是什麼?

輕量:Spring 是輕量的,基本的版本大約2MB。

控制反轉:Spring通過控制反轉實現了鬆散耦合,對象們給出它們的依賴,而不是創建或查找依賴的對象們。

面向切面的編程(AOP):Spring支持面向切面的編程,並且把應用業務邏輯和系統服務分開。

容器:Spring 包含並管理應用中對象的生命週期和配置。

MVC框架:Spring的WEB框架是個精心設計的框架,是Web框架的一個很好的替代品。

事務管理:Spring 提供一個持續的事務管理接口,可以擴展到上至本地事務下至全局事務(JTA)。

異常處理:Spring 提供方便的API把具體技術相關的異常(比如由JDBC,Hibernate or JDO拋出的)轉化為一致的unchecked 異常。

Spring由哪些模塊組成?

以下是Spring 框架的基本模塊:

Core module

Bean module

Context module

Expression Language module

JDBC module

ORM module

OXM module

Java Messaging Service(JMS) module

Transaction module

Web module

Web-Servlet module

Web-Struts module

Web-Portlet module

核心容器(應用上下文) 模塊。

這是基本的Spring模塊,提供spring 框架的基礎功能,BeanFactory 是 任何以spring為基礎的應用的核心。Spring 框架建立在此模塊之上,它使Spring成為一個容器。

BeanFactory – BeanFactory 實現舉例。

Bean 工廠是工廠模式的一個實現,提供了控制反轉功能,用來把應用的配置和依賴從正真的應用代碼中分離。

最常用的BeanFactory 實現是XmlBeanFactory 類。

XMLBeanFactory

最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根據XML文件中的定義加載beans。該容器從XML 文件讀取配置元數據並用它去創建一個完全配置的系統或應用。

解釋AOP模塊

AOP模塊用於發給我們的Spring應用做面向切面的開發, 很多支持由AOP聯盟提供,這樣就確保了Spring和其他AOP框架的共通性。這個模塊將元數據編程引入Spring。

解釋JDBC抽象和DAO模塊。

通過使用JDBC抽象和DAO模塊,保證數據庫代碼的簡潔,並能避免數據庫資源錯誤關閉導致的問題,它在各種不同的數據庫的錯誤信息之上,提供了一個統一的異常訪問層。它還利用Spring的AOP 模塊給Spring應用中的對象提供事務管理服務。

什麼是Spring IOC 容器?

Spring IOC 負責創建對象,管理對象(通過依賴注入(DI),裝配對象,配置對象,並且管理這些對象的整個生命週期。

IOC的優點是什麼?

IOC 或 依賴注入把應用的代碼量降到最低。它使應用容易測試,單元測試不再需要單例和JNDI查找機制。最小的代價和最小的侵入性使鬆散耦合得以實現。IOC容器支持加載服務時的餓漢式初始化和懶加載。

ApplicationContext通常的實現是什麼?

FileSystemXmlApplicationContext :此容器從一個XML文件中加載beans的定義,XML Bean 配置文件的全路徑名必須提供給它的構造函數。

ClassPathXmlApplicationContext:此容器也從一個XML文件中加載beans的定義,這裡,你需要正確設置classpath因為這個容器將在classpath裡找bean配置。

WebXmlApplicationContext:此容器加載一個XML文件,此文件定義了一個WEB應用的所有bean。

Bean 工廠和 Application contexts 有什麼區別?

Application contexts提供一種方法處理文本消息,一個通常的做法是加載文件資源(比如鏡像),它們可以向註冊為監聽器的bean發佈事件。另外,在容器或容器內的對象上執行的那些不得不由bean工廠以程序化方式處理的操作,可以在Application contexts中以聲明的方式處理。Application contexts實現了MessageSource接口,該接口的實現以可插拔的方式提供獲取本地化消息的方法。

一個Spring的應用看起來象什麼?

一個定義了一些功能的接口。

這實現包括屬性,它的Setter , getter 方法和函數等。

Spring AOP。

Spring 的XML 配置文件。

使用以上功能的客戶端程序。

依賴注入

什麼是Spring的依賴注入?

依賴注入,是IOC的一個方面,是個通常的概念,它有多種解釋。這概念是說你不用創建對象,而只需要描述它如何被創建。你不在代碼裡直接組裝你的組件和服務,但是要在配置文件裡描述哪些組件需要哪些服務,之後一個容器(IOC容器)負責把他們組裝起來。

有哪些不同類型的IOC(依賴注入)方式?

構造器依賴注入:構造器依賴注入通過容器觸發一個類的構造器來實現的,該類有一系列參數,每個參數代表一個對其他類的依賴。

Setter方法注入:Setter方法注入是容器通過調用無參構造器或無參static工廠 方法實例化bean之後,調用該bean的setter方法,即實現了基於setter的依賴注入。

哪種依賴注入方式你建議使用,構造器注入,還是 Setter方法注入?

你兩種依賴方式都可以使用,構造器注入和Setter方法注入。最好的解決方案是用構造器參數實現強制依賴,setter方法實現可選依賴。

Spring Beans

總結

以 上就是我對Java大型互聯網-探討spring框架你不知道的祕密面試題以及答案問題及其優化總結,分享給大家,希望大家知道什麼是Java大型互聯網-探討spring框架你不知道的祕密面試題以及答案問題及其優化。覺得收穫的話可以點個關注收藏轉發一波喔,謝謝大佬們支持!

  • 1、多寫多敲代碼,好的代碼與紮實的基礎知識一定是實踐出來的

  • 2、可以去百度搜索騰訊課堂圖靈學院的視頻來學習一下java架構實戰案例,還挺不錯的。

  • 最後,每一位讀到這裡的網友,感謝你們能耐心地看完。希望在成為一名更優秀的Java程序員的道路上,我們可以一起學習、一起進步!都能贏取白富美,走向架構師的人生巔峰!

  • 3丶想了解學習以上課程內容可加群:469717771 驗證碼頭條(06 必過)歡迎大家的加入喲!

引言

Spring是一個開放源代碼的設計層面框架,他解決的是業務邏輯層和其他各層的鬆耦合問題,因此它將面向接口的編程思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson創建。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。

什麼是spring?

Spring 是個java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴展是針對構建J2EE平臺的web應用。Spring 框架目標是簡化Java企業級應用開發,並通過POJO為基礎的編程模型促進良好的編程習慣。

使用Spring框架的好處是什麼?

輕量:Spring 是輕量的,基本的版本大約2MB。

控制反轉:Spring通過控制反轉實現了鬆散耦合,對象們給出它們的依賴,而不是創建或查找依賴的對象們。

面向切面的編程(AOP):Spring支持面向切面的編程,並且把應用業務邏輯和系統服務分開。

容器:Spring 包含並管理應用中對象的生命週期和配置。

MVC框架:Spring的WEB框架是個精心設計的框架,是Web框架的一個很好的替代品。

事務管理:Spring 提供一個持續的事務管理接口,可以擴展到上至本地事務下至全局事務(JTA)。

異常處理:Spring 提供方便的API把具體技術相關的異常(比如由JDBC,Hibernate or JDO拋出的)轉化為一致的unchecked 異常。

Spring由哪些模塊組成?

以下是Spring 框架的基本模塊:

Core module

Bean module

Context module

Expression Language module

JDBC module

ORM module

OXM module

Java Messaging Service(JMS) module

Transaction module

Web module

Web-Servlet module

Web-Struts module

Web-Portlet module

核心容器(應用上下文) 模塊。

這是基本的Spring模塊,提供spring 框架的基礎功能,BeanFactory 是 任何以spring為基礎的應用的核心。Spring 框架建立在此模塊之上,它使Spring成為一個容器。

BeanFactory – BeanFactory 實現舉例。

Bean 工廠是工廠模式的一個實現,提供了控制反轉功能,用來把應用的配置和依賴從正真的應用代碼中分離。

最常用的BeanFactory 實現是XmlBeanFactory 類。

XMLBeanFactory

最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根據XML文件中的定義加載beans。該容器從XML 文件讀取配置元數據並用它去創建一個完全配置的系統或應用。

解釋AOP模塊

AOP模塊用於發給我們的Spring應用做面向切面的開發, 很多支持由AOP聯盟提供,這樣就確保了Spring和其他AOP框架的共通性。這個模塊將元數據編程引入Spring。

解釋JDBC抽象和DAO模塊。

通過使用JDBC抽象和DAO模塊,保證數據庫代碼的簡潔,並能避免數據庫資源錯誤關閉導致的問題,它在各種不同的數據庫的錯誤信息之上,提供了一個統一的異常訪問層。它還利用Spring的AOP 模塊給Spring應用中的對象提供事務管理服務。

什麼是Spring IOC 容器?

Spring IOC 負責創建對象,管理對象(通過依賴注入(DI),裝配對象,配置對象,並且管理這些對象的整個生命週期。

IOC的優點是什麼?

IOC 或 依賴注入把應用的代碼量降到最低。它使應用容易測試,單元測試不再需要單例和JNDI查找機制。最小的代價和最小的侵入性使鬆散耦合得以實現。IOC容器支持加載服務時的餓漢式初始化和懶加載。

ApplicationContext通常的實現是什麼?

FileSystemXmlApplicationContext :此容器從一個XML文件中加載beans的定義,XML Bean 配置文件的全路徑名必須提供給它的構造函數。

ClassPathXmlApplicationContext:此容器也從一個XML文件中加載beans的定義,這裡,你需要正確設置classpath因為這個容器將在classpath裡找bean配置。

WebXmlApplicationContext:此容器加載一個XML文件,此文件定義了一個WEB應用的所有bean。

Bean 工廠和 Application contexts 有什麼區別?

Application contexts提供一種方法處理文本消息,一個通常的做法是加載文件資源(比如鏡像),它們可以向註冊為監聽器的bean發佈事件。另外,在容器或容器內的對象上執行的那些不得不由bean工廠以程序化方式處理的操作,可以在Application contexts中以聲明的方式處理。Application contexts實現了MessageSource接口,該接口的實現以可插拔的方式提供獲取本地化消息的方法。

一個Spring的應用看起來象什麼?

一個定義了一些功能的接口。

這實現包括屬性,它的Setter , getter 方法和函數等。

Spring AOP。

Spring 的XML 配置文件。

使用以上功能的客戶端程序。

依賴注入

什麼是Spring的依賴注入?

依賴注入,是IOC的一個方面,是個通常的概念,它有多種解釋。這概念是說你不用創建對象,而只需要描述它如何被創建。你不在代碼裡直接組裝你的組件和服務,但是要在配置文件裡描述哪些組件需要哪些服務,之後一個容器(IOC容器)負責把他們組裝起來。

有哪些不同類型的IOC(依賴注入)方式?

構造器依賴注入:構造器依賴注入通過容器觸發一個類的構造器來實現的,該類有一系列參數,每個參數代表一個對其他類的依賴。

Setter方法注入:Setter方法注入是容器通過調用無參構造器或無參static工廠 方法實例化bean之後,調用該bean的setter方法,即實現了基於setter的依賴注入。

哪種依賴注入方式你建議使用,構造器注入,還是 Setter方法注入?

你兩種依賴方式都可以使用,構造器注入和Setter方法注入。最好的解決方案是用構造器參數實現強制依賴,setter方法實現可選依賴。

Spring Beans

總結

以 上就是我對Java大型互聯網-探討spring框架你不知道的祕密面試題以及答案問題及其優化總結,分享給大家,希望大家知道什麼是Java大型互聯網-探討spring框架你不知道的祕密面試題以及答案問題及其優化。覺得收穫的話可以點個關注收藏轉發一波喔,謝謝大佬們支持!

  • 1、多寫多敲代碼,好的代碼與紮實的基礎知識一定是實踐出來的

  • 2、可以去百度搜索騰訊課堂圖靈學院的視頻來學習一下java架構實戰案例,還挺不錯的。

  • 最後,每一位讀到這裡的網友,感謝你們能耐心地看完。希望在成為一名更優秀的Java程序員的道路上,我們可以一起學習、一起進步!都能贏取白富美,走向架構師的人生巔峰!

  • 3丶想了解學習以上課程內容可加群:469717771 驗證碼頭條(06 必過)歡迎大家的加入喲!

Java大型互聯網-探討spring框架你不知道的祕密面試題以及答案

相關推薦

推薦中...