1. 程式人生 > >spring框架核心

spring框架核心

Spring的IOC.Spring就是一個大的工廠,通過工廠對Bean進行管理.
* Spring中的IOC:
* IOC:控制反轉.將物件的建立權交給Spring管理.
* DI:依賴注入.在由Spring建立的物件的時候,將物件依賴的物件注入進來.

    控制反轉 inversion on Control   :物件的建立交給外部容器完成
    依賴注入:dependency injection 處理物件依賴的關係  控制反轉是解決物件建立的問題,物件的關係的處理是依賴注入,注入到容器中
    AOP:面向切面程式設計。  原理是控制反轉和動態代理。
    作用:可以解決物件建立以及物件之間依賴關係。

        通過註解的方式,把物件加入ioc容器。
    建立物件以及處理物件依賴關係,相關的註解:
        @Component   指定把一個物件加入IOC容器
        @Repository   作用同@Component; 在持久層使用
        @Service      作用同@Component; 在業務邏輯層使用
        @Controller    作用同@Component; 在控制層使用
        @Resource     屬性注入

    3.動態代理
    1)代理物件,不需要實現介面;
    2)代理物件的生成,是利用JDKAPI, 動態的在記憶體中構建代理物件
    動態代理總結:代理物件不需要實現介面,但是目標物件一定要實現介面;否則不能用    動態代理!
    4.Cglib代理
    也叫做子類代理。在記憶體中構建一個子類物件從而實現對目標物件功能的擴充套件。
        JDK的動態代理有一個限制,就是使用動態代理的物件必須實現一個或多個介面。如果想代理沒有實現介面的類,就可以使用CGLIB實現。
    CGLIB是一個強大的高效能的程式碼生成包,它可以在執行期擴充套件Java類與實現Java介面。它廣泛的被許多AOP的框架使用,例如Spring AOP和dynaop,為他們提供方法的interception(攔截)。
    CGLIB包的底層是通過使用一個小而快的位元組碼處理框架ASM,來轉換位元組碼並生成新的類。不鼓勵直接使用ASM,因為它要求你必須對JVM內部結構包括class檔案的格式和指令集都很熟悉。
    5.AOP
            Aop,  aspect object programming  面向切面程式設計
            功能: 讓關注點程式碼與業務程式碼分離!
            關注點, 重複程式碼就叫做關注點;
            切面,關注點形成的類,就叫切面(類)!
             面向切面程式設計,就是指對很多功能都有的重複的程式碼抽取,再在執行的時候往網業        務方法上動態植入“切面類程式碼”。
            切入點,執行目標物件方法,動態植入切面程式碼。
            可以通過切入點表示式,指定攔截哪些類的哪些方法; 給指定的類在執行的時候            植入切面類程式碼。
            分析總結:
            關注點程式碼,就是指重複執行的程式碼。