認識spring架構

來源:互聯網
上載者:User

標籤:種類型   width   after   不同   面向切面   完全   ota   圖片   系統   

  對於spring架構,作為Java開發人員肯定不陌生,大名鼎鼎,名聲在外,但是對於spring架構沒有進行過系統的學習,從今天開始學習並且記錄一下spring架構的比較牛逼的特性。

一、spring簡化Java開發

為了降低Java開發的複雜性,spring架構採取了四種關鍵策略

(1)基於POJO的輕量級和最小侵入性編程

註:spring竭力避免因自身的API而弄亂你的應用代碼。spring不會強迫你實現spring規範的介面或繼承spring規範的類,相反,在基於spring構建的應用中,它的類通常沒有任何痕迹表明你使用了spring。最壞的情境是,一個類或許會使用spring註解,但它依舊是POJO。

(2)通過依賴注入和面向介面實現松耦合

註:依賴注入(Dependency Injection,DI)通過DI,對象的依賴關係將由系統中負責協調各對象的第三方組件在建立對象的時候進行設定。對象無需自行建立或管理它們的依賴關係,依賴關係被自動注入到需要他們的對象中去。兩種配置方式,一種是基於XML的配置,一種是基於Java的配置。

(3)基於切面和慣例進行聲明式編程

註:面向切面(aspect-oriented programming AOP)AOP能夠使諸如日誌模組、安全模組、事物模組這些服務模組化,並以聲明的方式將它們用到需要它們影響的組件中去。所造成的結果就是這些組件會具有更高的內聚性並且會更加關注自身的業務,完全不需要瞭解涉及系統服務所帶來的複雜性。總之,AOP能確保POJO的簡單性。

(4)通過切面和模板減少樣板式代碼

註:spring中封裝了一些實現功能的Java API的實現,比如:spring中的JdbcTemplate就是對JDBC訪問資料庫的封裝。

二、spring容器

容器是spring的核心。spring容器使用DI管理構成應用的組件,它會建立相互協作的組件之間的關聯。spring容器並不是只有一個,spring內建了多個容器的實現,可以歸納為兩種不同的類型:

(1)bean工廠(由org.springframework.beans.factory.BeanFactory 介面定義)是最簡單的容器,提供基本的DI支援。

(2)應用上下文(由org.springframework.context.ApplicationContext 介面定義)基於BeanFactory構建,並提供應用程式框架級的服務。

註:spring提供了多種類型的應用上下文,比如:

1)AnnotationConfigApplicationContext:從一個或多個基於Java的配置類中載入spring應用上下文

2)AnnotationConfigWebApplicationContext:從一個或多個基於Java的配置類中載入spring web應用上下文

3)ClassPathXmlApplicationContext:從類路徑下的一個或多個XML設定檔中載入上下文定義,把應用內容相關的類資源當做是類資源

4)FileSystemXmlApplicationContext:從系統檔案下的一個或多個XML設定檔中載入上下文定義

5)XMLWebApplicationContext:從web應用下的一個或多個XML設定檔中載入上下文定義

 三、bean的生命週期

具體的文字說明:

(1)spring對bean進行執行個體化

(2)spring將值和bean的引用注入到bean對應的屬性中

(3)如果bean實現了BeanNameAware介面,spring將bean的ID傳遞給setBeanName()方法

(4)如果bean實現了BeanFactoryAware介面,spring將調用setBeanFactory()方法

(5)如果bean實現了ApplicationContextAware介面,spring將調用setApplicationContext()方法,將bean所在的應用內容相關的引用傳入進來

(6)如果bean實現了BeanPostProcessor介面,spring將調用它們的postProcessBeforeInitialization()方法

(7)如果bean實現了InitializingBean介面,spring將調用它們的afterPropertiesSet()方法。類似的,如果bean使用init-method聲明了初始化的方法,該方法也會被調用

(8)如果bean實現了BeanPostProcessor介面,spring將調用它們的postProcessAfterInitialization()方法

(9)此時,bean已經準備就緒,可以被應用程式使用了,它們將一直駐留在應用上下文中,直到該應用上下文被銷毀

(10)如果bean實現了DisposableBean介面,spring將調用它的destroy()介面方法。同樣,如果bean使用了destroy-method聲明了銷毀方法,該方法也會被調用

註:spring架構模組分類

 

認識spring架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.