**什么是 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