1. 程式人生 > 實用技巧 >Spring框架簡介

Spring框架簡介

Spring框架簡介

本系列部落格將講述Spring Framework相關的概念和基本用法。

所使用的Spring Framework版本為5.2.x,內容主要來源於Spring官網視訊教程和一些部落格。

根據Spring官網定義的核心技術點有:

IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP

本系列部落格重點在於IoCAOP

核心概念

IoC與DI

控制反轉,即IoC(Inverse of Control),從字面上理解控制反轉就是將對在自身物件中的一個內建物件的控制權反轉。所謂的反轉,即把內建物件的控制權(可簡單理解為建立與銷燬)反轉給一個容器,而應用程式只需要提供物件的型別即可。這是一種解耦的設計思想

,並不是什麼具體的技術。

而IoC的具體實現技術通常有依賴注入(Dependency Injection,簡稱DI)和依賴查詢(Dependency Lookup)。通過控制反轉,物件在被建立的時候,由一個調控系統內所有物件的外界實體將其所依賴的物件的引用傳遞給它。也可以說,依賴被注入到物件中。[1]

在Spring中,IoC是由DI來實現的,於是有了官網這句話:IoC is also known as dependency injection (DI)[2]

Spring Bean

首先得理解一下什麼是Bean。從查到一些資料來看,Bean就是符合一些約定的Java類(如屬性用getXxx方法來訪問)[3]

,通常它是由容器所建立(如Tomcat)的[4]

那麼Spring Bean就比較好理解了,就是由Spring容器建立和管理的Java類(A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container)。

上面是從概念上理解的,從程式碼上來看Spring Bean又是什麼呢?

Spring容器內,所有配置的bean都會被表示為BeanDefinition物件(這是一個介面),這個物件主要包含了以下資訊[5]

元資訊 釋義
類全限定名 定義的bean的實際實現類
行為配置 如scope, lifecycle callbacks
引用 對其他bean依賴
其他資訊 如連線池的大小之類

IoC容器簡介

Spring的IoC容器主要職責是建立bean和為bean注入依賴。從程式碼上來看,org.springframework.beansorg.springframework.context兩個包是Spring的IoC容器的基礎。BeanFactory介面提供了一種高階配置機制,能夠管理任何型別的物件。ApplicationContext是它的子介面,添加了新功能:

  • 更易與Spring的AOP整合
  • 訊息資源的處理(例如使用國際化)
  • 事件釋出
  • 提供應用層面特定的context,如WebApplicationContext用於web應用。(通過繼承)

ApplicationContext及其實現類是重量級資源,有如下特點:

  • 佔用記憶體大
  • 單例
  • 執行緒安全

  1. https://baike.baidu.com/item/控制反轉/1158025 ↩︎

  2. https://docs.spring.io/spring/docs/5.2.7.RELEASE/spring-framework-reference/core.html#spring-core ↩︎

  3. https://www.zhihu.com/question/19773379 ↩︎

  4. https://baike.baidu.com/item/Bean/3792612 ↩︎

  5. https://docs.spring.io/spring/docs/5.2.7.RELEASE/spring-framework-reference/core.html#beans-definition ↩︎