Spring 框架各模塊的特性及使用的編程模型

Spring 框架各模塊的特性及使用的編程模型

Spring各模塊及特性

以下內(nèi)容使用版本為 Spring Framework 5.2.13 RELEASE,模塊名稱都為簡寫,如 aop 等同于 spring-aop模塊

  • aop,面向接口或者切面編程

    aopalliance,AOP的核心advice標(biāo)識(shí)和抽象反射攔截。

    aop,AOP的核心

  • aspects,spring對aspects的支持

    包含 beanscache、context annotation、scheduling、transacation

  • beans和contexts(涉及三個(gè)模塊 context、context-indexer、context-support),兩個(gè)模塊合起來是Spring IOC的重要核心實(shí)現(xiàn),前提是兩者都依賴core模塊

    beans,包含操作Java bean的接口和類。

    context,包含cache、context、ejb、format、jndi等等相關(guān)包以及相關(guān)內(nèi)容。

    indexer,用于讀取和管理組件索引

    support,包含cache、mail、scheduling、ui freemarker相關(guān)包以及相關(guān)內(nèi)容。

  • core,核心模塊,包含對 Java 語法支持等等

    主要包含對asm、cglib、core、lang、objenesis、util的支持

  • expression,Spring應(yīng)用程序上下文中表達(dá)式語言的解析支持,從 Spring 3 開始引入,類似jsp的EL語言

  • instrument,從Spring 2 開始支持 Java的裝配,以及對 Java agent的支持

  • jcl,從 Spring 5 開始,是 Spring 新型的日志框架,用來幫助 Spring 進(jìn)行統(tǒng)一的日志管理

  • jdbc,JDBC相關(guān)內(nèi)容,Spring 對JDBC的包裝,使JDBC更加容易使用,并減少了常見錯(cuò)誤的可能性

  • jms,Java message service,即 Java 消息服務(wù),Spring 希望通過 api 方式來實(shí)現(xiàn) Java message 的統(tǒng)一實(shí)現(xiàn)。

  • messaging,Spring 針對消息服務(wù)的統(tǒng)一實(shí)現(xiàn),有對應(yīng)的API 和實(shí)現(xiàn),包括 kakfa ,rabbitmq,rocketmq等

  • orm,O/R Mapping集成類的根目錄,包含 Spring 對 jpa 或 hibernate 等整合實(shí)現(xiàn),

  • oxm,O/X Mapping集成類的根目錄,xml的編列,marshal 和 unmarshal,是xml的序列化和反序列化

  • test,測試,包含了mock、testcontext、springmvc 和 webclient 的測試,一般不需要日常maven引入,或者代碼里可以通過<scope>來排除

  • tx ,transaction,Spring的事務(wù)抽象,借鑒了 JavaEE 中 jpa 的事務(wù)實(shí)現(xiàn)和 jdbc 的事務(wù)實(shí)現(xiàn),來統(tǒng)一封裝事務(wù)。

  • web

    http,HTTP客戶端和服務(wù)端的抽象

    remoting,Spring 遠(yuǎn)程處理

    web , 公共的、通用接口,用于定義Spring的Web基礎(chǔ)架構(gòu)和其他框架模塊之間的最小邊界點(diǎn)。

  • webflux,其中包含DispatcherHandler,這是WebFlux服務(wù)器端點(diǎn)處理的主要入口點(diǎn),包括用于將請求映射到處理程序,調(diào)用它們并處理結(jié)果的關(guān)鍵協(xié)定。

  • webmvc,提供應(yīng)用程序上下文、Spring Web MVC框架的核心接口和類集成的servlet。

  • websocket,websocket相關(guān)的通用抽象和Spring 配置

Spring 中用到的編程模型

面向?qū)ο缶幊?/h5>
  1. 契約接口:Aware、BeanPostProcessor……
  • Aware:接口處理,大部分接口繼承并加入對應(yīng)的set*方法,如ApplicationContextAware、BeanFactoryAware

  • BeanPostProcessor :Bean生命周期的后置處理,里面運(yùn)用了 Java 8 的 default 方法實(shí)現(xiàn)

  1. 設(shè)計(jì)模式:觀察者模式、組合模式、模板模式……
  • 觀察者模式:ApplicationEvent,基于Java Event實(shí)現(xiàn)

  • 組合模式:Composite

  • 模板模式:JdbcTemplate

  1. 對象繼承:Abstract* 類,Spring 中有很多抽象類
面向切面編程
  1. 動(dòng)態(tài)代理:JdkDynamicAopProxy

  2. 字節(jié)碼提升:ASM、CGlib、AspectJ

面向元編程
  1. 注解:模式注解(@Component、@Service、@Respository...)
  • java 語言規(guī)范注解之間不能有繼承關(guān)系,所以 Spring 中很多注解都是派生的關(guān)系

  • @Component:組件,@Respository/@Service/@Controller都是@Component的派生注解

  1. 配置: Environment抽象、PropertySources、BeanDefinition...
  • Environment抽象:
    • 從 Spring 3.1 開始引入,包含一些 Profiles,profile 可以認(rèn)為是用戶配置,可以對不同系統(tǒng)進(jìn)行區(qū)分,如開發(fā)是 dev,生產(chǎn)環(huán)境是 prod
    • 包含一些屬性,通過 PropertyResolver 中的 getProperty 來獲取
  1. 泛型:GenericTypeResolver、ResolvableType...
  • ResolvableType
函數(shù)驅(qū)動(dòng)
  1. 函數(shù)接口:ApplicationEventPublisher
  • Java 中的函數(shù)接口是 FunctionalInterface

  • Spring的函數(shù)接口有且僅有一個(gè)抽象方法,不包含Object中的方法以及default的實(shí)現(xiàn)

  1. Reactive:Spring WebFlux
  • WebFlux:
模塊驅(qū)動(dòng)
  1. Maven Artifacts

  2. OSGI Bundles

  3. Java 9 Automatic Modules

  4. Spring @Enable*

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容