征服Spring--設計思想篇
Spring設計目標:
Spring是一個輕量級的框架,是一個針對Javabean生命週期,以及物件之間依賴關係進行管理的輕量級容器框架。
在程式設計中一個物件要完成一定的邏輯操作,需要依賴很多物件來幫助完成,這樣類之間就形成了強大的依賴關係。修改一個地方往往牽扯到修改許多的地方。在Spring容器技術開發出來之後,類之間的依賴關係就不需要寫在程式碼中了。容器可以管理物件之間的依賴關係,我們自己不需要建立物件,這部分物件通過容器來完成。
面向Bean
Spring是面向Bean的程式設計(Bean Oriented Programming,BOP),Bean才是Spring中真正的主角。Spring中沒有bean也就沒有Spring存在的意義了。Spring通過配置檔案或者註解來管理物件以及物件之間的依賴關係。
控制反轉(IOC)和依賴注入(DI)
在Spring中,最總要的思想就是控制反轉(IOC),依賴注入(DI)是控制反轉思想的實現方式。
一句話說控制反轉思想:在沒有控制反轉前,一個物件使用另一個物件需要自己動手去new這個對下,也就是寫在程式碼中。在有控制反轉技術以後。物件的建立由Spring容器去完成。Spring容器實現所依賴物件關係的建立和協調,物件只關注業務邏輯本身。
在Spring中所有類都要在IOC容器中登記。告訴Spring容器你是什麼類,你的物件需要什麼物件。在系統執行的時候,容器會自動把你所需要的物件給你。也把你給其他需要你的物件。所有物件的建立,銷燬都由Spring容器來控制。也就是說控制生命週期的不再是引用它的物件,而是Spring容器。
在系統執行中,IOC容器動態的向某一個物件提供它所需要的其他物件。這一點是通過自動注入(DI)技術來實現的。自動注入式通過Java動態反射來實現的。這一點後面會詳細探索。
IOC容器關鍵點:
需要被Spring容器管理的物件必須定義到Spring容器中。
需要定義構造器或者getter,setter方法讓Spring將物件注入過來。
面向切面程式設計(AOP)
面向切面程式設計(Aspect-Oriented Programming),Aspect 是一種模組化的機制。AOP的本質是在一系列縱向的控制流程中,把那些相同的子流程提取成一個橫向的面,面向這些橫向的面進行操作。