Java Web之初識Spring

1. 爲什麼會有Spring?

  • 在程序開發中,一個完整的應用程序是由一組相互協作的對象組成的,我們需要控制這些對象的創建,協調對象之間的依賴關係,而且要儘可能做到高內聚、低耦合,光是做到這些就會花費很大的成本,而Spring框架就是爲了幫助我們管理對象及其依賴關係而生的,此外還提供了事務、日誌記錄、安全控制、異常處理等面向切面的能力;

2. Spring的核心思想:IOC與AOP

  • Spring中有兩個重要的概念就是控制反轉(IOC)面向切面(AOP)

  • IOC的基本概念是:不直接在代碼中創建對象,僅僅聲明創建它們的方式,通過配置文件或註解描述它們的創建方式,最後由Spring IOC容器管理對象的創建及其依賴關係。其中,BeanFactory接口(Bean工廠)是Spring IOC容器的基礎,它是工廠模式的實現,允許通過名稱創建和查找對象以及管理對象之間的依賴關係,BeanFactory底層支持兩種對象模型:

     1. 單例模型:提供了全局唯一實例對象,是默認的,最常用的模型;
     2. 原型模型:每一次獲取都會創建新的實例對象;
    
  • AOP即面向切面編程,是IOC的補充技術,核心概念是:將影響多個類的行爲封裝到可重用的模塊中。比如:將每個對象的執行過程作爲日誌記錄下來,傳統辦法需要將日誌語句放到每個類的每個方法中,使得代碼十分臃腫,通過AOP的方式將日誌服務抽象出來,並以聲明的方式應用要需要日誌的對象上以達到解耦的效果。

     - AOP的常見應用場景有:權限認證、日誌、異常捕獲、事務等。
    

3. Spring的構成

3.1 核心容器模塊

  • 核心容器模塊由spring-beans、spring-core、spring-context以及 spring-expression組成;
  • spring-beans和spring-core包含了控制反轉和依賴注入,BeanFactory控制着Bean(對象)的創建,當BeanFactory創建後不會直接實例化所有的Bean,只有當某個Bean被使用到時,BeanFactory纔會對該Bean進行實例化。
  • spring-context是對BeanFactory的擴展,爲BeanFactory添加了Bean生命週期控制,ApplicationContext是該模塊的接口,它的父類是BeanFactory,與BeanFactory不同,ApplicationContext創建後會直接對所有的Bean進行實例化。
  • spring-expression模塊可以查詢、管理運行中的對象,也可以方便地調用對象方法等。

3.2 AOP和設備支持模塊

  • AOP和設備支持模塊由spring-aop、spring-aspects、spring-instrument等3個模塊組成;
  • spring-aop以JVM的動態代理技術爲核心,設計出環繞通知、前置後置通知、返回通知、異常通知等實現;
  • spring-aspects主要爲Spring提供多種AOP實現方法;
  • spring-instrucment的主要作用是在JVM啓動時生成一個代理類,我們可以通過代理類在運行時修改類的字節,從而改變一個類的功能;

3.3 數據訪問和集成模塊

數據訪問和集成模塊由spring-jdbc、spring-tx、spring-orm、spring-oxm、spring-jms等5個模塊組成。

  • spring-jdbc用於簡化JDBC操作;
  • spring-tx用於控制JDBC事務;
  • spring-orm用於DAO的實現和事務策略;
  • spring-oxm用於映射XML數據;
  • spring-jms能夠發送和接受消息;

3.4 Web組件模塊

Web組件由spring-web、spring-webmvc、spring-websocket、spring-webflux等4個模塊組成。

  • spring-web模塊通過Servlet和Listeners來初始化IOC容器;
  • spring-webmvc實現了Spring MVC;
  • spring-websocket是與Web前端進行全雙工同心度額協議;
  • spring-webflux是一個用來建議異步非阻塞的響應式框架;

3.5 集成測試模塊

  • spring-test模塊,主要給測試提供支持;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章