1. 程式人生 > 實用技巧 >就因為不懂Spring被同為開發的媳婦嫌棄!怒刷完這份阿里P8技術官整理Spring核心知識點筆記,奪回地位

就因為不懂Spring被同為開發的媳婦嫌棄!怒刷完這份阿里P8技術官整理Spring核心知識點筆記,奪回地位

Spring 原理

它是一個全面的、企業應用開發一站式的解決方案,貫穿表現層、業務層、持久層。但是 Spring 仍然可以和其他的框架無縫整合。

Spring 特點

1. 輕量級

2. 控制反轉

3. 面向切面

4. 容器

5. 框架集合

Spring 核心元件

Spring 常用模組

Spring 主要包

Spring 常用註解

bean 注入與裝配的的方式有很多種,可以通過 xml,get set 方式,建構函式或者註解等。簡單易用的方式就是使用 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文件的朋友們關注點贊後