面試問題:java
什麼是spring?程序員
Spring是一個開源的輕量級Java EE開發應用框架,讓java開發模塊化,而且全面。貫穿邏輯層,表現層,持久層。讓每個功能模塊均可以獨立分開,下降耦合,提升代碼複用率!它讓程序員專一於業務實現面試
1,Spring Core
Core模塊是Spring的核心類庫,Spring的全部功能都依賴於該類庫,Core主要實現IOC功能,Sprign的全部功能都是藉助IOC實現的。
2,AOP
AOP模塊是Spring的AOP庫,提供了AOP(攔截器)機制,並提供經常使用的攔截器,供用戶自定義和配置。spring
3,ORM
Spring 的ORM模塊提供對經常使用的ORM框架的管理和輔助支持,Spring支持經常使用的Hibernate,ibtas,jdao等框架的支持,Spring自己並不對ORM進行實現,僅對常見的ORM框架進行封裝,並對其進行管理數據庫
4,DAO模塊
Spring 提供對JDBC的支持,對JDBC進行封裝,容許JDBC使用Spring資源,並能統一管理JDBC事物,並不對JDBC進行實現。框架
5,WEB模塊
WEB模塊提供對常見框架如Struts1,WEBWORK(Struts 2),JSF的支持,Spring可以管理這些框架,將Spring的資源注入給框架,也能在這些框架的先後插入攔截器。 模塊化
6,Context模塊
Context模塊提供框架式的Bean訪問方式,其餘程序能夠經過Context訪問Spring的Bean資源,至關於資源注入。spa
7,MVC模塊
WEB MVC模塊爲Spring提供了一套輕量級的MVC實現,在Spring的開發中,咱們既能夠用Struts也能夠用Spring本身的MVC框架,相對於Struts,Spring本身的MVC框架更加簡潔和方便。對象
依賴注入DI-接口
IoC的一個重點是在系統運行中,動態的向某個對象提供它所須要的其餘對象。這一點是經過DI(Dependency Injection,依賴注入)來實現的。好比對象A須要操做數據庫,之前咱們老是要在A中本身編寫代碼來得到一個Connection對象,有了 spring咱們就只須要告訴spring,A中須要一個Connection,至於這個Connection怎麼構造,什麼時候構造,A不須要知道。在系統運行時,spring會在適當的時候製造一個Connection,而後像打針同樣,注射到A當中,這樣就完成了對各個對象之間關係的控制。A須要依賴 Connection才能正常運行,而這個Connection是由spring注入到A中的,依賴注入的名字就這麼來的。那麼DI是如何實現的呢? Java 1.3以後一個重要特徵是反射(reflection),它容許程序在運行的時候動態的生成對象、執行對象的方法、改變對象的屬性,spring就是經過反射來實現注入的。
控制反轉IoC
Spring所倡導的開發方式就是如此,全部的類都會在spring容器中登記,告訴spring你是個什麼東西,你須要什麼東西,而後spring會在系統運行到適當的時候,把你要的東西主動給你,同時也把你交給其餘須要你的東西。全部的類的建立、銷燬都由 spring來控制,也就是說控制對象生存週期的再也不是引用它的對象,而是spring。對於某個具體的對象而言,之前是它控制其餘對象,如今是全部對象都被spring控制,因此這叫控制反轉。
注入方式:
a、接口注入;不推薦 b、setter方法注入;不推薦 c、構造方法注入;