1. 程式人生 > >JAVA面試之AOP與IOC解析

JAVA面試之AOP與IOC解析

JAVA面試之AOP與IOC AOP是Aspect Oriented Programming的縮寫,意思是面向切面程式設計.與OOP(Object Oriented Programming)面向物件程式設計對等,都是一種程式設計思想.
從OOP角度分析,我們關注業務的處理邏輯,是屬於縱向的行為,從AOP角度分析,我們關注物件行為發生時的問題,是屬於橫向的問題.
AOP就是把貫穿在各個模組之間相同的功能抽取出來,然後封裝成一個面. AOP的作用:1.監控函式的呼叫 2.捕獲異常的發生 實際應用於:事務,安全,日誌等橫切關注
兩種方式實現AOP的方式:

1.JDK提供的動態代理實現,Spring規定對於有介面的類用JDK,對於無介面和抽象類使用cglib,雖然cglib均可代理,但是cglib複雜,效率低,而且cglib中代理的類中不能有final的方法.
2.其中對於AOP來說,他也可以理解為一個面,在這個面裡面我們利用代理類來找目標物件是什麼,攔截那些方法,然後在這些方法的前後也可以執行一些操作.


IOC(Inversion of control):控制反轉,依賴注入

概念:控制權有物件本身專享容器,由容器根據配置檔案去建立例項,並建立各個例項之間的關係,則通俗的說,物件的建立再也不需要程式設計師來管理,而是可以有spring容器來進行建立和銷燬,我們只需要關注業務邏輯.

依賴IOC容器並管理bean,有兩種,一種是BeanFactory,另一種是ApplicationContext,但是APPlicationContext extends BeanFactory.

核心:Spring中,bean工廠建立的各個例項稱作bean.