Spring是什麼
spring是一個開源的java框架,集成了各種主流的技術包括web mvc,orm,ejb,rmi,javamail等
他就象一個粘合濟,在實際項目中,將前後臺程序粘合在一起,構建出一個完整的系統。
spring中的各個組件也可獨立使用,你可以在你的項目中選擇性的使用spring提供的某一部分功能
Spring的核心是ioc和aop
什麼是IOC
Inversion of Control,控制反轉或反轉控制,其和另外一個概念DI-Dependency Injection依賴注入
等價。
到底如何來理解IOC?
IOC確切的說,他是一種思想、概念,跟OOP是一種編程思想一樣,他是在大量的項目實踐中總結出來了
的一種精妙地程序設計思想。在原先的程序設計中,我們通常是通過new XXX(),其中,XXX就是某個類
的名稱,在沒有ioc思想引入時,我們程序中大量充斥着new XXX()這樣的代碼。這些代碼都需要我們程
序員手工編寫。而引入了ioc思想之後,對象的管理全部交給Spring這個容器來管理,當我們程序需要
對應類的對象時,我們直接從Spring容器裏面獲取,換句話說,就是Spring容器把產生好的對象交給了
我們的程序,這種方式就叫做注入(就跟醫生拿着可怕的針管將液體注入到我們的屁股上一樣,爲什麼
要注入,還不是你的屁股需要嘛!因爲你需要,所以我給你,這就是DI)
而IOC的深層含義就是,將原先對象產生的主動權交給了Spring容器,由Spring容器來爲我們完成對象的
new的過程,並將對象在我們需要時交給我們。
Spring正是IOC思想的一個完美產物和實踐者!
什麼是aop
Aspect Oriented Programming,面向方面編程,它也是一種編程思想,它是對OOP編程思想的一種昇華
OOP強調的是對象,而aop強調的是面(不是餃子)
那麼,什麼是面?
如果拿我們的教室做比方,那麼教室的前門和後窗就是一個面,一個截面,通過這樣的截面,將我們這塊
空間分成了室內、窗外和門外三部分。
如果拿我們吃的漢堡做比方,那麼漢堡的夾心的前後就是一個面,一個截面,通過這樣的截面,將我們的
普通麪包分成了麪包上層、夾心、麪包下層。
如果。。。
還是拿我們的程序代碼來說,
如果我們的dao用jdbc實現,那麼在dao的每一個方法裏都充斥着這樣的代碼,
打開連接
執行sql語句
關閉連接
那麼,這時,我們就可以在執行sql前後做出一個截面,通過這樣的截面,將我們的程序代碼分開,將打開
連接和關閉連接交給AOP去做,我們程序員只關注執行不同sql語句部分,避免了在dao的每個方法中都要編
寫重複的打開連接和關閉連接代碼。
如果我們的dao用hibernate實現,那麼在dao的每一個方法裏都充斥着這樣的代碼
打開session
執行session動作
關閉session
同理,我們就可以在執行session動作前後做出一個截面,通過這樣的截面,將我們的程序代碼分開,將打開
session和關閉session交給AOP去做,我們程序員只關注執行session動作,避免了代碼的重複豈不更好
這就是AOP,好好理解吧,那可是個漫長的思想體驗過程!祝君好運!