1. 程式人生 > >對Spring中IOC和AOP的理解

對Spring中IOC和AOP的理解

ted program 條件 ogr class spring配置 所有 com 語法

IOC:控制反轉也叫依賴註入。利用了工廠模式。

 為了方便理解,分解成每條以便記憶。
1.將對象交給容器管理,你只需要在spring配置文件總配置相應的bean,以及設置相關的屬性,讓spring容器來生成類的實例對象以及管理對象。2.在spring容器啟動的時候,spring會把你在配置文件中配置的bean都初始化好,3.在你需要調用的時候,就把它已經初始化好的那些bean分配給你需要調用這些bean的類(假設這個類名是A),分配的方法就是調用A的setter方法來註入,而不需要你在A裏面new這些bean了。
註意:面試的時候,如果有條件,畫圖,這樣更加顯得你懂了。

spring的IOC容器能夠幫我們自動new對象,對象交給spring管之後我們不用自己手動去new對象了,也就是控制權的轉讓。 spring使用BeanFactory來實例化、配置和管理對象,但是它只是一個接口,裏面有一個getBean()方法。 我們一般都不直接用BeanFactory,而是用它的實現類 ApplicationContext ,這個類會自動解析我們配置的applicationContext.xml


AOP:面向切面編程。(Aspect-Oriented Programming)
  AOP可以說是對OOP的補充和完善。OOP引入封裝、繼承和多態性等概念來建立一種對象層次結構,用以模擬公共行為的一個集合。當我們需要為分散的對象引入公共行為的時候,OOP則顯得無能為力。也就是說,OOP允許你定義從上到下的關系,但並不適合定義從左到右的關系。例如日誌功能。日誌代碼往往水平地散布在所有對象層次中,而與它所散布到的對象的核心功能毫無關系。在OOP設計中,它導致了大量代碼的重復,而不利於各個模塊的重用。
  AOP將程序中的交叉業務邏輯(比如安全,日誌,事務等),封裝成一個切面,然後註入到目標對象(具體業務邏輯)中去。

實現AOP的技術,主要分為兩大類:一是采用動態代理技術,利用截取消息的方式,對該消息進行裝飾,以取代原有對象行為的執行;二是采用靜態植入的方式(靜態代理),引入特定的語法創建“方面”,從而使得編譯器可以在編譯期間織入有關“方面”的代碼
簡單點解釋,比方說你想在你的biz層所有類中都加上一個打印‘你好’的功能這你經可以用aop思想來做,你先寫個類寫個方法,方法經實現打印‘你好’讓後你Ioc這個類 ref=“biz.*”讓每個類都註入。

對Spring中IOC和AOP的理解