Spring核心思想--六大模塊介紹

Spring核心容器(Core Spring container)spring

容器是Spring框架最核心的部分,它管理着Spring應用中bean的建立、配置和管理。在該模塊中,包括了Spring bean工廠,它爲Spring提供了DI的功能。基於bean工廠,咱們還會發現有多種Spring應用上下文的實現。還提供了許多企業服務。
全部的Spring模塊都構建於核心容器之上。數據庫

面向切面編程(AOP)編程

Spring對面向切面編程提供了豐富的支持。這個模塊是Spring應用系統中開發切面的基礎,與DI同樣,AOP能夠幫助應用對象解耦。數據結構

數據訪問與集成(Data access & integration)架構

Spring的JDBC和DAO模塊封裝了大量樣板代碼,這樣可使得數據庫代碼變得簡潔,也能夠更專一於咱們的業務,還能夠避免數據庫資源釋放失敗而引發的問題。
另外,Spring AOP爲數據訪問提供了事務管理服務,同時Spring還對ORM進行了集成,如Hibernate、MyBatis等。框架

Web與遠程調用(Web and remoting)工具

該模塊提供了SpringMVC框架給Web應用,還提供了多種構建和其它應用交互的遠程調用方案。
SpringMVC框架在Web層提高了應用的鬆耦合水平。單元測試

Instrumentation測試

該模塊提供了爲JVM添加代理(agent)的功能。具體來說,就是爲Tomcat提供了一個織入代理,可以爲Tomcat傳遞類文件,就像這些類文件是被類加載器加載的同樣。spa

測試(Test)

爲了使得開發者可以很方便的進行測試,Spring提供了測試模塊以至力於Spring應用的測試。
經過該模塊,Spring爲使用Servlet、JNDI等編寫單元測試提供了一系列的mock對象實現。

咱們主要來看看Spring的骨骼架構和核心組件~

(一)Spring的骨骼架構

 1 ---Spring框架
 2    |---Spring的特性功能
 3        |---Web
 4        |---Transaction
 5        |---AOP
 6        |---JDBC
 7        |---JMX
 8        |---Orm
 9        |---......
10    |---Spring骨骼架構
11        |---核心組件Context
12        |---核心組件Bean
13        |---核心組件Core

Core、Context、Bean構建起了整個Spring的骨骼架構,沒有它們就不可能有AOP、Web等上層的特性功能。

Spring的設計理念

若是要在三個核心組件中選出核心,那就是Bean組件,其實Spring就是面向Bean的編程(BOP,Bean Oriented Programming)。
咱們用Spring的緣由是什麼?
Spring解決了一個很是關鍵的問題,它可讓咱們把對象之間的依賴關係轉而用配置文件來管理,也就是它的依賴注入機制。而這個注入關係在一個叫IOC的容器中進行管理。
IOC又是什麼?
IOC是控制反轉(Inversion of Control),是被Bean包裹的對象。Spring正是經過把對象包裝在Bean中從而達到管理這些對象及作一系列額外操做的目的。

這種設計策略徹底相似於Java實現OOP的設計理念,構建一個數據結構,而後根據這個數據結構設計它的生存環境,並讓它在這個環境中按照必定的規律不停地運動, 在它們的不停運動中設計一個系列與環境或者與其餘個體完成信息交換。

核心組件是如何進行協同工做的呢?

前面說Bean是Spring中的最核心,那麼把Bean比做一場演出中的演員,Context就是舞臺背景,Core就是演出的道具。只有三者一塊兒才能具有演一場好戲的條件。固然,想要演出足夠精彩,還要有Spring提供的特點功能。

Bean包裝的是Object,Object必然有數據,如何給這些數據提供生存環境就是Context要解決的問題。Context要發現每一個Bean之間的關係,爲它們創建這種關係而且維護好這種關係。因此Context就是一個Bean關係的集合,這個集合又叫作IOC容器,創建起IOC容器,Spring就能夠開始爲咱們工做了。

Core是發現、創建和維護每一個Bean之間的關係所須要的一系列工具,也能夠叫它Util(多用途的、工具性質的包)。

(二)核心組件詳解

Bean組件

Bean組件在Spring的org.springframework.beans包下。這個包下的全部類主要解決3件事情:Bean的定義、Bean的建立及對Bean的解析。咱們只須要關心它的建立就行了,其餘兩個由Spring在內部幫咱們完成,咱們是看不見的。
Spring Bean的建立是典型的工廠模式,它的頂級接口是BeanFactory。
Bean的定義主要由BeanDefinition描述。它的定義完整地描述了在Spring的配置文件中咱們定義的< bean/>節點中全部的信息,包括各類子節點。當Spring成功解析咱們定義的一個< bean/>節點後,在Spring的內部它就被轉化成BeanDefinition對象,之後全部的操做都是對這個對象進行的。
Bean的解析主要就是對Spring配置文件的解析。

Context組件

Context組件在Spring的org.springframework.context包下。
ApplicationContext是Context的頂級父類。
ApplicationContext繼承了BeanFactory,這也說明Spring容器中國運行的主體對象是Bean。
ApplicationContext繼承了ResourseLoader接口,使其能夠訪問到任何外部資源。
ApplicationContext必需要完成的幾件事情:

  • 標識一個應用環境
  • 利用BeanFactory建立Bean對象
  • 保存對象關係表
  • 可以捕獲各類事件

Context做爲Spring的IOC容器,基本上整合了Spring的大部分功能。

Core組件

Core組件包含了不少關鍵類,一個重要的組成部分就是定義了資源的訪問方式。
Resource接口封裝了各類可能的資源類型,也就是對使用者來講屏蔽了文件類型的不一樣。
Resource接口繼承了InputStreamSource接口,這樣全部的資源均可以經過InputStream類來獲取,因此也屏蔽了資源的提供者。
加載資源的任務是由ResourceLoader接口完成的,它屏蔽了全部的資源加載者的差別。

Context把資源的加載、解析和描述工做委託給了ResourcePatternResolver類來完成,它至關於一個接頭人,把資源的加載、解析和資源的定義整合在一塊兒便於其餘組件使用。

IOC容器是如何工做的?

IOC容器其實是Context組件結合其餘兩個組件共同構建了一個Bean關係網。

把IOC容器比做一個箱子,在這個箱子裏有若干個球的模子,能夠用這些模子來製造不少種不一樣的球,還有一個製造這些球模的機器,這個機器能夠產生球模。那麼它們的對應關係就是BeanFactory,即那個製造球模的機器,球模就是Bean,製造出來的球就是Bean的實例。
BeanFactoryPostProcessor對應到當造球模被造出來時,有機會對其作出適當的修正,即它能夠幫咱們修改球模。InitializingBean和DisposableBean是在球模造球的開始和結束階段,咱們能夠完成一些預備和掃尾工做。BeanPostProcessor可讓咱們對球模造出來的球作出適當的修正。
最後還有一個FactoryBean,它但是一個神奇的球模。這個球模不是預先就定型的,而是由你來肯定它的形狀。這樣在這個箱子裏能夠發現全部咱們想要的球。

-------------------- 做者:SillyDuckkk 來源:CSDN 原文:https://blog.csdn.net/hxllhhy/article/details/79900264

相關文章
相關標籤/搜索