關於spring面試題
阿新 • • 發佈:2018-06-26
comm 編程) ref str white inside 工廠模式 port 操作
1.spring框架有哪些主要模塊?
- Spring Core,Spring的核心功能,用IOC容器,解決對象創建以及依賴關系,包含並管理應用對象的配置和生命周期
- Spring DAO,Spring對jdbc的支持,可使用JdbcTemplate來簡化數據操作
- Spring ORM,Spring對ORM的支持,提供了對主流的對象映射關系框架的支持。提供了與多個第三方持久層框架的良好整合
- Spring AOP,切面編程,減少了非業務代碼的重復,降低了模塊之間的耦合。比如:事務管理,日誌,權限驗證
- Spring Web,Spring對Web模塊的支持.
- Spring JEE,Spring對JavaEE其他模塊的支持。如EJB,JMS等
2.spring框架用到了哪些設計模式?
- 單例模式:在Spring配置bean時,一般默認為單例
- 依賴註入模式:
- 工廠模式:BeanFactory用來創建對象實例
- 代理模式:Spring AOP
- 前端控制器模式:Spring提供了DispatcherServlet對請求進行處理
- 模板方式模式:減少代碼重復性
3.解釋IOC(控制反轉)、DI(依賴註入)
IOC:把對象的創建、初始化、銷毀交給spring來管理,而不是由程序控制,實現控制反轉。
DI:依賴註入,在Spring創建對象的過程中,將對象依賴屬性通過配置進行註入
DI可以通過setter方法註入(設值註入)、構造器註入和接口註入三種方式來實現。
註意:
1. 使用構造器註入時,先實例化依賴的對象後,才實例化這個對象。而使用set方法時,Spring首先實例化對象,然後才實例化所有依賴的對象。
2. 當設值註入與構造註入同時存在時,先執行設值註入,再執行構造註入。
4.解釋AOP(面向切面編程)
http://www.cnblogs.com/mcahkf/p/9065833.html
5.BeanFactory和ApplicationContext有什麽區別?
- ApplicationContext是BeanFactory的子接口。
- BeanFactory是Spring中最底層的接口,提供了最簡單的容器的功能,只提供了實例化對象和拿對象的功能。而
- 加載方式的區別:BeanFactory采用的是延遲加載的形式來註入Bean;而ApplicationContext是在Ioc啟動時就一次性創建所有的Bean,好處是可以馬上發現Spring配置文件中的錯誤,壞處是造成浪費。
6.spring配置Bean的方式
- 基於XML的配置
- 基於註解的配置
- 基於Java的配置
6.Bean的作用域
- singleton:Spring IoC容器中只會存在一個共享的Bean實例。Singleton作用域是Spring中的缺省作用域
- prototype:每次通過Spring容器獲取prototype定義的bean時,容器都將創建一個新的Bean實例,每個Bean實例都有自己的屬性和狀態
- request:對不同的Http請求則會產生新的Bean,而且該bean僅在當前Http Request內有效。
- session:對不同的Session請求則會產生新的Bean,該bean實例僅在當前Session內有效。
- global Session:在一個全局的Http Session中,容器會返回該Bean的同一個實例,僅在使用portlet context時有效。
7.Spring Bean的生命周期
8.如何在Spring中註入一個Java Collection
Spring提供了以下四種集合類的配置元素:
- <list> : 該標簽用來裝配可重復的list值。
- <set> : 該標簽用來裝配沒有重復的set值。
- <map>: 該標簽可用來註入鍵和值可以為任何類型的鍵值對。
- <props> : 該標簽支持註入鍵和值都是字符串類型的鍵值對。
8.Spring 事務傳播屬性以及隔離
事務傳播屬性:
- PROPAGATION_REQUIRED--支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
- PROPAGATION_SUPPORTS--支持當前事務,如果當前沒有事務,就以非事務方式執行。
- PROPAGATION_MANDATORY--支持當前事務,如果當前沒有事務,就拋出異常。
- PROPAGATION_REQUIRES_NEW--新建事務,如果當前存在事務,把當前事務掛起。
- PROPAGATION_NOT_SUPPORTED--以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
- PROPAGATION_NEVER--以非事務方式執行,如果當前存在事務,則拋出異常。
事務隔離級別:
- DEFAULT:使用數據庫默認的事務隔離級別.另外四個與JDBC的隔離級別相對應
- READ_UNCOMMITTED:這是事務最低的隔離級別,充許令外一個事務可以看到這個事務未提交的數據。這種隔離級別會產生臟讀,不可重復讀和幻像讀。
- READ_COMMITTED:保證一個事務修改的數據提交後才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的數據
- REPEATABLE_READ:這種事務隔離級別可以防止臟讀,不可重復讀。但是可能出現幻像讀。它除了保證一個事務不能讀取另一個事務未提交的數據外,還保證了避免下面的情況產生(不可重復讀)。
- SERIALIZABLE 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。除了防止臟讀,不可重復讀外,還避免了幻像讀。
· 代理模式:在AOP和remoting中被用的比較多。
· 單例模式:在spring配置文件中定義的bean默認為單例模式。
· 模板方法模式:用來解決代碼重復的問題。
· 前端控制器模式:Spring提供了DispatcherServlet來對請求進行分發。
· 依賴註入模式:貫穿於BeanFactory / ApplicationContext接口的核心理念。
· 工廠模式:BeanFactory用來創建對象的實例。
關於spring面試題