spring 組建及核心內容的簡介(一)

一:爲了降低java開發的複雜性,spring採取了以下四種關鍵策略,sping所做的任何事情都會追溯到下述的一條或者多條策略
①:基於POJO的輕量級和最小侵入性編程
②:通過依賴注入和麪向接口實現松耦合
③:基於切面和慣例進行聲明式編程
④:通過切面和模板減少樣板式編程
二:耦合:耦合具有雙面性,耦合是必須的,但應當被小心謹慎的管理
壞處:一方面,緊密耦合的代碼難以測試,難以複用,難以理解.
好處:一定程度的耦合又是必須的,完全沒有耦合的代碼什麼也幹不了
高度耦合代碼壞處:
(1)維護麻煩
(2) 不容易進行代碼測試
這裏寫圖片描述

弱耦合的代碼好處:
(1)如果一個對象只通過接口而不是具體的實現或者初始化過程來表明依賴關係,那麼這種依賴就能夠在對象本身毫不知情的情況下,用不同的具體實現進行替換.
(2)測試起來方便
好處

三:依賴注入(DI)
①:好處: 代碼變得異常簡單並且更容易測試和理解
②:作用:通過DI,對象的依賴關係將由系統中負責協調各個對象的第三方組件在創建對象的時候進行設定,
對象無需自行創建或者管理他們的依賴關係,通過DI的最大收益就是解耦合
③:注入方式 構造器注入(constructor injection)
四:裝配 創建組件之間相互協作的行爲被稱爲裝配
①:裝配方式 xml是常見的裝配方式
這裏寫圖片描述
②:spring還支持使用java來配置,替代XML配置
這裏寫圖片描述

五:應用切面
①:DI能夠讓相互協作的軟件組織保持鬆散耦合,而面向切面編程允許你把遍佈應用各處的功能分離出來形成可重用的組件
②:作用 可以將關注點與業務核心代碼分離.例如 日誌 安全 事務

六:使用模板消除樣板式代碼
常用的樣板式代碼是使用JDBC訪問數據庫查詢數據

七:容器 在spring應用中,對象生存於spring容器中,spring容器負責創建對象,裝配他們,配置管理他們的整個生命週期,從生存到死亡.容器是spring的核心,spring容器使用DI管理構成的應用組件,創建相互協作的關聯
①:spring容器並不只有一個,spring自帶了多個容器的實現,可以歸納爲2大類.
(1)bean工廠是最簡單的容器,提供基本的DI支持.
(2)應用上下文基於BeanFactory構建,並提供了應用框架級別的服務,例如從屬性文件解析文本信息以及發佈應用事件給感興趣的事件監聽者

②:spring通過應用上下文(Application Context)裝載bean的定義並把他們組裝起來.spring應用上線文全權負責對象的組裝與創建.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()的方法 –調用setBeanName()
  4. 如果bean實現了BeanFactoryAware接口,Spirng將調用setBeanFactory()方法,將beanFactory容器實例傳入
  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將調用它們的destory()接口方法,同樣如果bean使用了destroy-method聲明瞭銷燬方法,該方法也會被調用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章