javascript
Spring框架—体系结构
原文作者:CHS007chs
原文地址:Spring核心框架體系結(jié)構(gòu)
上圖是Spring 5的模塊結(jié)構(gòu)圖,而這些組件被分別整合在核心容器(Core Container)、AOP(Aspect Oriented Programming)、設(shè)備支持(Instrument)、數(shù)據(jù)訪問(wèn)及集成(Data Access/Integratioin)、Web、報(bào)文發(fā)送(Messaging)、Test等模塊。
1.核心容器
- spring-core:控制反轉(zhuǎn)IoC(Inversion of Control)與依賴注入DI(Dependency Injection)的基本實(shí)現(xiàn),控制反轉(zhuǎn)是種設(shè)計(jì)思想,即將你設(shè)計(jì)好的對(duì)象交給容器控制,而不是傳統(tǒng)的在你的對(duì)象內(nèi)部直接控制。
- spring-beans:Bean工廠與bean的裝配,BeanFactory接口使用控制反轉(zhuǎn)對(duì)應(yīng)用程序的配置、依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼進(jìn)行分離。但是BeanFactory容器實(shí)例化后并不會(huì)自動(dòng)實(shí)例化Bean,只有當(dāng)Bean被使用時(shí)BeanFactory容器才會(huì)對(duì)該Bean進(jìn)行實(shí)例化與依賴關(guān)系的裝配。
- spring-context:spring的context上下文,即IoC容器,它擴(kuò)展了BeanFactory,為它添加了Bean生命周期管理、框架事件體系、資源加載透明化等功能,此外該模塊還提供了很多企業(yè)級(jí)支持,如遠(yuǎn)程訪問(wèn)、任務(wù)調(diào)度等。ApplicationContext是該模塊的核心接口,它擴(kuò)展了BeanFactory,ApplicationContext容器實(shí)例化后會(huì)自動(dòng)對(duì)所有的單實(shí)例Bean進(jìn)行實(shí)例化與依賴關(guān)系的裝配,使之處于待用狀態(tài)。
- spring-expression:spring表達(dá)式語(yǔ)言,是統(tǒng)計(jì)表達(dá)式語(yǔ)言(EL)的擴(kuò)展模塊,可以查詢、管理運(yùn)行中的對(duì)象,同時(shí)也方便的可以調(diào)用對(duì)象方法、操作數(shù)組、集合等。最出色的要數(shù)函數(shù)調(diào)用和簡(jiǎn)單字符串的模板函數(shù)。
2.AOP和設(shè)備支持
- spring-aop:面向切面編程,aop就是在某一個(gè)類或方法執(zhí)行前后打個(gè)標(biāo)記,聲明在執(zhí)行到這里之前要先執(zhí)行什么,執(zhí)行完這里之后要接著執(zhí)行什么,插入新的執(zhí)行方法。在Spring中,它是以JVM的動(dòng)態(tài)代理技術(shù)為基礎(chǔ),然后設(shè)計(jì)一系列AOP橫切實(shí)現(xiàn),比如前置通知、返回通知、異常通知等,同時(shí)Pointcut接口來(lái)匹配切入點(diǎn),可以使用現(xiàn)有切入點(diǎn)來(lái)設(shè)計(jì)橫切面,也可以擴(kuò)展相關(guān)方法根據(jù)需求進(jìn)行切入。
- spring-aspects:集成AspectJ, 主要是為Spring AOOP提供多種AOP實(shí)現(xiàn)方法。
- spring-instrument:提供一些類級(jí)的工具支持和ClassLoader級(jí)的實(shí)現(xiàn),用于服務(wù)器。該模塊是基于JAVA SE中的“java.lang.instrument”進(jìn)行設(shè)計(jì)的,應(yīng)該算是AOP的一個(gè)支援模塊,主要作用是在JVM啟用時(shí),生成一個(gè)代理類,程序員通過(guò)代理類在運(yùn)行時(shí)修改類的字節(jié),從而改變一個(gè)類的實(shí)現(xiàn)。
3.數(shù)據(jù)訪問(wèn)及集成
- spring-jdbc:jdbc的支持,主要是提供JDBC模板方式、關(guān)系數(shù)據(jù)庫(kù)對(duì)象化方式、SimpleJdbc方式、事務(wù)管理來(lái)簡(jiǎn)化JDBC編程,主要實(shí)現(xiàn)類JdbcTemplate、SimpleJdbcTemplate、NamedParameterJdbcTemplate
- spring-tx:事務(wù)控制,通過(guò)它的AOP配置,可以靈活的配置在任何一層,但是在很多的需求和應(yīng)用,直接使用JDBC事務(wù)控制還是有其優(yōu)勢(shì)的。
- spring-orm:對(duì)象關(guān)系映射,集成orm框架,主要集成Hibernate、Java Persistence API(JPA)和Java Data Object(JDO)用于資源管理、數(shù)據(jù)訪問(wèn)對(duì)象(DAO)的實(shí)現(xiàn)和事務(wù)策略。
- spring-oxm:對(duì)象xml映射,OXM是Object to XML Mapping的縮寫,例如:jaxb, castor xmlbeans,JiBx,XStream等。
- spring-jms:java消息服務(wù)
- spring-messaging:為Spring框架集成一些基礎(chǔ)的報(bào)文發(fā)送應(yīng)用。
4.Web
- spring-web:提供最基礎(chǔ)的web支持,主要建立在核心容器上,通過(guò)Servlet或者Listener來(lái)初始化IOC容器,也包括一些與Web相關(guān)的支持。
- spring-webmvc:實(shí)現(xiàn)了Spring MVC的Web應(yīng)用
- spring-websocket:主要是與Web前端的全雙工通訊協(xié)議。
- spring-webflux:是一個(gè)新的非阻塞式Reactive Web框架,可以用來(lái)建立異步、非阻塞、事件驅(qū)動(dòng)的服務(wù),并且擴(kuò)展性非常好。
該圖是Spring 5的包結(jié)構(gòu),可以從中清楚看出Spring各個(gè)模塊之間的依賴關(guān)系,所以在學(xué)習(xí)Spring的源碼時(shí),可以從Spring-core入手,其次是Spring-beans和spring-aop,隨后是spring-context,再其次是spring-tx和spring-orm。因?yàn)閟pring-core依賴了commons-logging,而其他模塊都依賴了spring-core,所以整個(gè)spring框架都依賴了commons-logging。
最后歡迎大家訪問(wèn)我的個(gè)人網(wǎng)站:1024s
總結(jié)
以上是生活随笔為你收集整理的Spring框架—体系结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HBase—基础介绍
- 下一篇: Spring框架—IoC容器