一些關於Spring的隨筆

Spring的IOC、AOPspring

 

IOC(Inversion of Control):編程

 

spring容器控制了全部的bean,不用spring之前,一個bean要依賴另外一個bean就在這個bean裏初始化另外一個bean才能使用另外一個bean,是這個bean在控制另外一個bean。如今spring容器控制全部的bean,並把另外一個bean注入給這個bean。反轉:是指控制bean的權利轉移給容器了。設計模式

 

"不要給咱們打電話,咱們會打給你的(don‘t call us, we‘ll call you)"這是著名的好萊塢原則。  安全

在好萊塢,把簡歷遞交給演藝公司後就只有回家等待。由演藝公司對整個娛樂項目徹底控制,演員只能被動式的接受公司的差使,在須要的環節中,完成本身的演出。 微信

這和軟件開發有必定的類似性, 演員們就像一個個Java Object, 最先的時候本身去建立本身所依賴的對象, 有了演藝公司(Spring容器)的介入,全部的依賴關係都是演藝公司搞定的, 因而控制就翻轉了 性能

 

應用控制反轉後,當對象被建立時,由一個調控系統內的全部對象的外界實體將其所依賴的對象的引用傳遞給它。也就是說,依賴被注入到對象中。因此控制反轉是關於一個對象如何獲取它所依賴的對象的引用的,在這裏,反轉指的是責任的翻轉ui

 

AOP(Aspect Oriented Programming):spa

 

在作系統設計的時候,一個很是重要的工做就是把一個大系統作分解,按業務功能分解成一個個低耦合、高內聚的模塊,分解後會發現有些東西是通用的,或者是跨越多個模塊的:設計

 

日誌:對特定的操做輸出日誌來記錄日誌

安全:在執行操做以前進行的操做檢查

性能:要統計每一個方法的執行時間

事務:方法開始前要開始事務,結束後要提交或回滾事務

等等....

若是每次用到他們都編寫一遍代碼過於麻煩還有大量的代碼冗餘,aop就是用來解決這個問題的。

 

大致能夠理解爲:把某一項功能的代碼封裝起來,在用到它的地方直接切入。

 

 

Spring 的 bean:

bean就至關於定義一個組件,這個組件是用於具體實現某個功能的。這裏的所定義的bean就至關於給了你一個簡潔方便的方法來調用這個組件實現你要完成的功能。

 

Spring的容器:

 

Spring容器能夠幫助你管理全部的Bean對象,bean都放在容器裏

Beanfactory 和 ApplicationContext 均可以當作是容器的具體表現形式。就像不一樣樣子的桶。用戶須要什麼樣就用什麼樣的。

Beanfactory: 最基本的接口類  設定了最基本的功能規範。(最簡單的桶,能裝水,有把手)

Spring經過定義BeanDifinition 來管理基於Spring的應用中各類對象以及他們之間的相互依賴關係。BeanDifinition 抽象了咱們對Bean的定義,是讓容器起做用的主要數據類型。

Beanfactory 定義了IOC容器的最基本的形式,而且提供了IOC容器所應該遵照的最基本的服務契約,也是咱們使用IOC容器所應遵照的最底層和最基本的編程規範。並無給出容器的具體實現。

 

用戶使用容器時,可使用轉義符「&」來獲得FactoryBean自己,用來區分經過容器來獲取FactoryBean產生的對象和獲取FactoryBean自己。舉例來講,若是myJndiObject是一個FactoryBean,那麼使用&myJndiObject獲得的是FactoryBean,而不是myJndiObject這個FactoryBean產生出來的對象。 

 

區分FactoryBean和BeanFactory這兩個在Spring中使用頻率很高的類,它們在拼寫上很是類似。一個是Factory,也就是IoC容器或對象工廠;一個是Bean。在Spring中,全部Bean都是由BeanFactory(也就是IoC容器)來進行管理的。但對FactoryBean而言,這個Bean不是簡單的Bean,而是一個能產生或者修飾對象生成的工廠Bean,它的實現與設計模式中的工廠模式和修飾器模式相似。

 

最後給你們分享一個鏈接:

 

Spring 的本質系列(一):依賴注入

該鏈接來自於 碼農翻身,碼農翻身是一個很是讚的微信公衆號。

相關文章
相關標籤/搜索