**什麼是 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,hibernateorJDO
拋出的)轉化爲一致的 unchecked異常。
**IOC的優勢是什麼?**
答:IOC 或 依賴注入把應用的代碼量降到最低。它使應用容易測試,單元測試再也不須要單例和
JNDI查找機制。最小的代價和最小的侵入性使鬆散耦合得以實現。IOC容器支持加載服務時的餓
漢式初始化和懶加載
**spring的核心類有哪些?**
答:BeanFactory:產生一個新的實例,能夠實現單例模式
BeanWrapper:提供統一的 get及 set方法
ApplicationContext:提供框架的實現,包括 BeanFactory的全部功能
**.spring的接口有哪些**
答:1.BeanFactory最基礎最核心的接口
2.Resource接口,能夠通用地訪問文件資源
3.FactoryBean工廠 bean
4.MessageSource接口
**1.什麼是 IOC**
答:1.IOC就是控制反轉,就是將對象建立的權利交給 spring容器來完成。
今後程序員無需關注對象的建立過程。spring容器來維護對象的生命週期。
**2.什麼是 AOP**
答:1.切面(Aspect):就是完成額外任務的類
2.鏈接點(Joinpoint):就是調用的目標方法
3.通知(Advice):切面中的方法
4.切入點(Pointcut):匹配鏈接點的斷言。(執行通知的 if,就是一個匹配規則)
**3:解釋 SpringBean的生命週期?**
答:在一個 bean實例被初始化時,須要執行一系列的初始化操做以達到可用的狀態。一樣的,當
一個 bean不在被調用時須要進行相關的析構操做,並從 bean容器中移除。
Springbeanfactory負責管理在 spring容器中被建立的 bean的生命週期。Bean的生命週期
由兩組回調(callback)方法組成。
1.初始化以後調用的回調方法。
2.銷燬以前調用的回調方法。
Spring框架提供瞭如下四種方式來管理 bean的生命週期事件:
InitializingBean和 DisposableBean回調接口
針對特殊行爲的其餘 Aware接口
Bean配置文件中的 Custominit()方法和 destroy()方法
@PostConstruct和@PreDestroy註解方式
**4:Spring框架中的單例 Beans是線程安全的麼?**
答: Spring框架並無對單例 bean進行任何多線程的封裝處理。關於單例 bean的線程安全和並
發問題須要開發者自行去搞定。但實際上,大部分的 Springbean並無可變的狀態(好比 Serview
類和 DAO類),
因此在某種程度上說 Spring的單例 bean是線程安全的。若是你的 bean有多種狀態的話(比
如 ViewModel對象),就須要自行保證線程安全。
最淺顯的解決辦法就是將多態 bean的做用域由「singleton」變動爲「prototype」
**5.Spring注入對象有幾種方式**
答:構造器注入,set注入,接口注入。3種方式。
談談 AOP中的代理
答:Spring中的 AOP內部集成了 jdk的動態代理和 cglib的動態代理。
使用 Spring的 AOP生成代理對象將不會再有代理對象原生的缺點。
spring中能夠作到方法級別的代理。
**6.AOP的實現原理**
答:當獲取對象時,首先將對象與切入點表達式進行匹配。若是匹配成功,
則會建立代理對象。而後代理對象執行方法時就會執行通知。
**7.spring事務的回滾策略**
答:1.運行時異常:
若是程序出現運行時異常,那麼錯誤級別較高,spring會自動的回滾事務。
2.檢查異常:
對於檢查異常而言,spring認爲檢查異常是能夠避免的,程序員 能夠修復的,
那麼 spring容器就不負責回滾檢查異常
**8.Spring支持的事務管理類型**
答:Spring支持兩種類型的事務管理:
編程式事務管理:這意味你經過編程的方式管理事務,給你帶來極大的靈活性,可是難維護。
聲明式事務管理:這意味着你能夠將業務代碼和事務管理分離,你只需用註解和 XML配置來
管理事務
**9.Spring框架的事務管理有哪些優勢?**
答:它爲不一樣的事務 API如 JTA,JDBC,Hibernate,JPA和 JDO,提供一個不變的編程模式。
它爲編程式事務管理提供了一套簡單的 API而不是一些複雜的事務 API如
它支持聲明式事務管理。
它和 Spring各類數據訪問抽象層很好得集成
**10.解釋 Spring支持的幾種 bean的做用域。**
答:Spring框架支持如下五種 bean的做用域:
singleton:bean在每一個 Springioc容器中只有一個實例。
prototype:一個 bean的定義能夠有多個實例。
request: 每 次 http請 求 都 會 創 建 一 個 bean, 該 做 用 域 僅 在 基 於 web的 Spring
ApplicationContext情形下有效。
session:在一個 HTTPSession中,一個 bean定義對應一個實例。該做用域僅在基於 web
的 SpringApplicationContext情形下有效。
global-session:在一個全局的 HTTPSession中,一個 bean定義對應一個實例。該做用域僅
在基於 web的 SpringApplicationContext情形下有效。
缺省的 Springbean的做用域是 Singleton程序員