Spring面試總結1!
1 、BeanFactory和ApplicationContext區別
BeanFactory基本的工廠 解析,管理,例項化所有容器內的bean的介面,spring中所有解析配置檔案的類都直接或者間接實現該介面 ApplicationContext介面implements BeanFactory BeanFactory 在解析配置檔案時並不會初始化物件,只有在使用物件時(getBean())才會對該物件進行初始化 ApplicationContext 在解析配置檔案時對配置檔案中的所有物件都初始化了,getBean()方法只是獲取物件的過程 ApplicationContext是對BeanFactory擴充套件,提供了更多功能 國際化處理 事件傳遞 Bean自動裝配 各種不同應用層Context實現
2、依賴注入Bean的屬性
對於類成員變數,注入方式有三種
•建構函式注入
•屬性setter方法注入
•介面注入
3.使用註解定義Bean
除了@Component外,Spring提供了3個功能基本和@Component等效的註解 •@Repository用於對DAO實現類進行標註 •@Service用於對Service實現類進行標註 •@Controller用於對Controller實現類進行標註 這三個註解是為了讓標註類本身的用途清晰,Spring在後續版本會對其增強
4、aop術語
5、代理知識總結
Spring在執行期,生成動態代理物件,不需要特殊的編譯器 Spring AOP的底層就是通過JDK動態代理或CGLib動態代理技術 為目標Bean執行橫向織入 1.若目標物件實現了若干介面,spring使用JDK的java.lang.reflect.Proxy類代理。 2.若目標物件沒有實現任何介面,spring使用CGLIB庫生成目標物件的子類。 程式中應優先對介面建立代理,便於程式解耦維護 標記為final的方法,不能被代理,因為無法進行覆蓋 JDK動態代理,是針對介面生成子類,介面中方法不能使用final修飾 CGLib 是針對目標類生產子類,因此類或方法 不能使final的 Spring只支援方法連線點,不提供屬性連線
6、Spring AOP增強型別
前置通知 org.springframework.aop.MethodBeforeAdvice
在目標方法執行前實施增強
後置通知 org.springframework.aop.AfterReturningAdvice
在目標方法執行後實施增強
環繞通知 org.aopalliance.intercept.MethodInterceptor
在目標方法執行前後實施增強
異常丟擲通知 org.springframework.aop.ThrowsAdvice
在方法丟擲異常後實施增強
引介通知 org.springframework.aop.IntroductionInterceptor
在目標類中新增一些新的方法和屬性
7、Spring AOP切面型別
Advisor : 代表一般切面,Advice本身就是一個切面,對目標類所有方法進行攔截
PointcutAdvisor : 代表具有切點的切面,可以指定攔截目標類哪些方法
IntroductionAdvisor : 代表引介切面,針對引介通知而使用切面
8、使用AspectJ實現AOP
@AspectJ提供不同的通知型別
@Before 前置通知,相當於BeforeAdvice
@AfterReturning 後置通知,相當於AfterReturningAdvice
@Around 環繞通知,相當於MethodInterceptor
@AfterThrowing丟擲通知,相當於ThrowAdvice
@After 最終final通知,不管是否異常,該通知都會執行
@DeclareParents 引介通知,相當於IntroductionInterceptor
9、Spring 支援兩種方式事務管理
程式設計式的事務管理
在實際應用中很少使用
通過TransactionTemplate手動管理事務
使用XML配置宣告式事務
開發中推薦使用(程式碼侵入性最小)
Spring的宣告式事務是通過AOP實現的
10、Spring有哪些優點
1.使用Spring的IOC容器,將物件之間的依賴關係交給Spring,降低元件之間的耦合性,讓我們更專注於應用邏輯
2.可以提供眾多服務,事務管理,WS等。
3.AOP的很好支援,方便麵向切面程式設計。
4.對主流的框架提供了很好的整合支援,如Hibernate,Struts2,JPA等
5.Spring DI機制降低了業務物件替換的複雜性。
6.Spring屬於低侵入,程式碼汙染極低。
7.Spring的高度可開放性,並不強制依賴於Spring,開發者可以自由選擇Spring部分或全部
11、Spring的七大模組
☞ Spring 核心容器(Core):提供Spring框架的基本功能。
核心容器的主要元件是BeanFactory,是工廠模式的實現。
BeanFactory使用控制反轉(Ioc)模式將應用程式的配置和依賴性規範與實際的應用程式碼程式分開。
☞ Spring AOP:通過配置管理特性,Spring AOP模組直接面向方面的程式設計功能整合到了Spring框架中,
所以可以很容易的使Spring框架管理的任何物件支援 AOP。
通過使用Spring AOP,不用依賴於EJB元件,就可以將宣告性事務管理整合到應用程式中。
☞ Spring ORM:Spring框架集成了若干ORM框架,從而提供了ORM的物件關係工具,其中包括 JDO、Hibernate、iBatis和TopLink。
所有這些都遵從Spring的通用事務和DAO異常層結構。
☞ Spring DAO:JDBC DAO抽象層提供了有意義的異常層次的結構,可用該結構來管理異常處理和不同資料供應商丟擲的異常錯誤資訊。
異常層次結構簡化了錯誤處理,並且大大的降低 了需要編寫的異常程式碼數量(例如,開啟和關係連線)。
Spring DAO的面向JDBC的異常遵從通用的DAO異常層結構。
☞ Spring WEB:Web上下文模組建立在上下文模組(Context)的基礎之上,為基於Web服務的應用程式提供了上下文的服務。
所以Spring框架支援 Jakarta Struts的整合。Web模組還簡化了處理多部分請求及將請求引數繫結到域物件的工作。
☞ Spring上下文(Context):Spring上下文是一個配置檔案,向Spring框架提供上下文資訊。
Spring上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化校驗和排程功能。
☞ Spring MVC:Spring的MVC框架是一個全功能的構建Web應用程式的MVC實現。
通過策略介面,MVC框架變成為高度可配置的,MVC容納的大量檢視技術,包括JSP、Velocity、Tiles、iText和Pol