1. 程式人生 > >談談對ioc,aop的理解

談談對ioc,aop的理解

Ioc:控制反轉

      定義:Ioc—Inversion of Control,即“控制反轉”,不是什麼技術,而是一種設計思想。在Java開發中,Ioc意味著將你設計好的                   物件交給容器控制,而不是傳統的在你的物件內部直接控制。如何理解好Ioc呢?理解好Ioc的關鍵是要明確“誰控制誰,                   控制什麼,為何是反轉(有反轉就應該有正轉了),哪些方面反轉了”,那我們來深入分析一下:

      正轉與反轉:

                正轉:傳統的應用程式由我們在物件中主動去建立物件依賴

                反轉:程式中需要的物件由ioc容器建立,程式直接呼叫即可。

     DI(依賴注入):

                被注入物件依賴IoC容器配置依賴物件

     注入物件方式:註解,xml配置(傳參:構造方法,set)

     

      ioc容器控制物件,應用程式依賴於ioc容器,ioc容器注入某個物件,

      注入某個物件所需要的外部資源(包括物件、資源、常量資料)

Aop:面向切面程式設計

    實現:比如日誌,事務,許可權

    AOP的基本概念:

      (1)Aspect(切面):通常是一個類,裡面可以定義切入點和通知

      (2)JointPoint(連線點):程式執行過程中明確的點,一般是方法的呼叫

      (3)Advice(通知):AOP在特定的切入點上執行的增強處理,有before,after,afterReturning,afterThrowing,around

      (4)Pointcut(切入點):就是帶有通知的連線點,在程式中主要體現為書寫切入點表示式

      (5)AOP代理:AOP框架建立的物件,代理就是目標物件的加強。Spring中的AOP代理可以使JDK動態代理,

          也可以是CGLIB代理,前者基於介面,後者基於子類

   底層:

      spring aop預設實現的是jdk的動態代理,當代理的是類的時候,自動切換cglib代理;

       jdk:基於介面    cglib:基於子類