1. 程式人生 > >Spring面試總結1!

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