Spring 原理
它是一個全面的、企業應用開發一站式的解決方案,貫穿表現層、業務層、持久層,但是 Spring 仍然可以和其他的框架無縫整合,
Spring 特點
1. 輕量級
2. 控制反轉
3. 面向切面
4. 容器
5. 框架集合

Spring 核心組件

Spring 常用模塊

Spring 主要包

Spring 常用注解
Spring IOC 原理
概念
Spring 通過一個組態檔描述 Bean 及 Bean 之間的依賴關系,利用 Java 語言的反射功能實體化 Bean 并建立 Bean 之間的依賴關系, Spring 的 IoC 容器在完成這些底層作業的基礎上,還提供 了 Bean 實體快取、生命周期管理、 Bean 實體代理、事件發布、資源裝載等高級服務,
Spring 容器高層視圖
Spring 啟動時讀取應用程式提供的 Bean 配置資訊,并在 Spring 容器中生成一份相應的 Bean 配 置注冊表,然后根據這張注冊表實體化 Bean,裝配好 Bean 之間的依賴關系,為上層應用提供準 備就緒的運行環境,其中 Bean 快取池為 HashMap 實作

IOC 容器實作
BeanFactory-框架基礎設施
BeanFactory 是 Spring 框架的基礎設施,面向 Spring 本身;ApplicationContext 面向使用 Spring 框架的開發者,幾乎所有的應用場合我們都直接使用 ApplicationContext 而非底層 的 BeanFactory,

ApplicationContext 面向開發應用
ApplicationContext 由 BeanFactory 派 生 而 來 , 提 供 了 更 多 面 向 實 際 應 用 的 功 能 , ApplicationContext 繼承了 HierarchicalBeanFactory 和 ListableBeanFactory 介面,在此基礎 上,還通過多個其他的介面擴展了 BeanFactory 的功能:

WebApplication 體系架構
WebApplicationContext 是專門為 Web 應用準備的,它允許從相對于 Web 根目錄的 路徑中裝載組態檔完成初始化作業,從 WebApplicationContext 中可以獲得 ServletContext 的參考,整個 Web 應用背景關系物件將作為屬性放置到 ServletContext 中,以便 Web 應用環境可以訪問 Spring 應用背景關系,

實體化
Spring Bean 生命周期
實體化一個 Bean,也就是我們常說的 new,
IOC 依賴注入
按照 Spring 背景關系對實體化的 Bean 進行配置,也就是 IOC 注入,
setBeanName 實作
如果這個 Bean 已經實作了 BeanNameAware 介面,會呼叫它實作的 setBeanName(String) 方法,此處傳遞的就是 Spring 組態檔中 Bean 的 id 值
BeanFactoryAware 實作
如果這個 Bean 已經實作了 BeanFactoryAware 介面,會呼叫它實作的 setBeanFactory, setBeanFactory(BeanFactory)傳遞的是 Spring 工廠自身(可以用這個方式來獲取其它 Bean, 只需在 Spring 組態檔中配置一個普通的 Bean 就可以)
ApplicationContextAware 實作
如果這個 Bean 已經實作了 ApplicationContextAware 介面,會呼叫 setApplicationContext(ApplicationContext)方法,傳入 Spring 背景關系(同樣這個方式也 可以實作步驟 4 的內容,但比 4 更好,因為 ApplicationContext 是 BeanFactory 的子接 口,有更多的實作方法)
postProcessBeforeInitialization 介面實作-初始化預處理
. 如果這個 Bean 關聯了 BeanPostProcessor 介面,將會呼叫 postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor 經常被用 作是 Bean 內容的更改,并且由于這個是在 Bean 初始化結束時呼叫那個的方法,也可以被應 用于記憶體或快取技術,
init-method
如果 Bean 在 Spring 組態檔中配置了 init-method 屬性會自動呼叫其配置的初始化方法,
postProcessAfterInitialization
如果這個 Bean 關聯了 BeanPostProcessor 介面,將會呼叫 postProcessAfterInitialization(Object obj, String s)方法, 注:以上作業完成以后就可以應用這個 Bean 了,那這個 Bean 是一個 Singleton 的,所以一 般情況下我們呼叫同一個 id 的 Bean 會是在內容地址相同的實體,當然在 Spring 組態檔中 也可以配置非 Singleton,
Destroy 過期自動清理階段
當 Bean 不再需要時,會經過清理階段,如果 Bean 實作了 DisposableBean 這個介面,會調 用那個其實作的 destroy()方法;
destroy-method 自配置清理
最后,如果這個 Bean 的 Spring 配置中配置了 destroy-method 屬性,會自動呼叫其配置的 銷毀方法,

bean 標簽有兩個重要的屬性(init-method 和 destroy-method),用它們你可以自己定制 初始化和注銷方法,它們也有相應的注解(@PostConstruct 和@PreDestroy),
需要這份pdf檔案的朋友們關注點贊后


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/184460.html
標籤:java
