javascript
Spring--总体架构
總體架構(gòu)
Spring 框架基本涵蓋了企業(yè)級(jí)應(yīng)用開(kāi)發(fā)的各個(gè)方面,它由二十多個(gè)模塊組成。
Core Container
Core Container 由spring-core 、spring-beans 、spring-context 、spring-context-support和spring-expression ( Spring Expression Language )模塊組成。
spring-core 和spring-beans 模塊提供框架的基礎(chǔ)部分,包括IoC 和Dependency Injection 功能。BeanFactory 是一個(gè)復(fù)雜工廠模式的實(shí)現(xiàn),無(wú)須編程就能實(shí)現(xiàn)單例,并允許開(kāi)發(fā)人員將配置和特定的依賴從實(shí)際程序邏輯中解耦。
Context ( spring-context )模塊建立在Core 和Beans 模塊提供的功能基礎(chǔ)之上,它是一種在框架類型下實(shí)現(xiàn)對(duì)象存儲(chǔ)操作的手段,有一點(diǎn)像JNDI 注冊(cè)。Context 繼承了Beans 模塊的特性,并且增加了對(duì)國(guó)際化的支持(如用在資源包中)、事件廣播、資源加載和創(chuàng)建上下文(如一個(gè)Servlet容器) 。Context 模塊也支持如EJB 、JMX 和基礎(chǔ)遠(yuǎn)程訪問(wèn)的Java EE 特性。ApplicationContext 接口是Context 模塊的主要表現(xiàn)形式。spring-context-support 模塊提供了對(duì)常見(jiàn)第三方庫(kù)的支持,以便集成到Spring應(yīng)用上下文,如緩存(EhCache 、JCache ) 、調(diào)度( CommonJ、Quartz )等。
spring-expression 模塊提供了一種強(qiáng)大的表達(dá)式語(yǔ)言,用來(lái)在運(yùn)行時(shí)查詢和操作對(duì)象圖。它是作為JSP 2.1 規(guī)范所指定的統(tǒng)一表達(dá)式語(yǔ)言的一種擴(kuò)展。這種語(yǔ)言支持對(duì)屬性值、屬性參數(shù)、方法調(diào)用、數(shù)組內(nèi)容存儲(chǔ)、收集器和索引、邏輯和算數(shù)的操作及命名變量, 并且通過(guò)名稱從Spring的控制反轉(zhuǎn)容器中取回對(duì)象。表達(dá)式語(yǔ)言模塊還支持列表投影、選擇和通用列表聚合。
AOP&Instrumentation
spring-aop模塊提供AOP(面向切面編程)的實(shí)現(xiàn),從而能夠?qū)崿F(xiàn)方法攔截器和切人點(diǎn)完全分離代碼。使用源碼級(jí)別元數(shù)據(jù)的功能,也可以在代碼中加入行為信息,在某種程度上類似于.NET屬性
單獨(dú)的spring-aspects 模塊提供了集成使用AspectJ。
spring-instrument 模塊提供了類instrumentation的支持和在某些應(yīng)用程序服務(wù)器使用類加載器實(shí)現(xiàn)。
spring-instrument-tomcat 用于TomcatInstrumentation代理。
Message
自SpringFramework4 版本開(kāi)始提供spring-messaging 模塊,主要包含從Spring Integration 項(xiàng)目中抽象出來(lái)的,如Message 、MessageChannel 、MessageHandler 及其他用來(lái)提供基于消息的基礎(chǔ)服務(wù)。
該模塊還包括一組消息映射方法的注解,類似基于編程模型中的Spring MVC 的注解。
Data Access
Data Access/Integration由JDBC 、ORM 、OXM 、JMS 和Transaction 模塊組成。
①spring-jdbc模塊提供了一個(gè)JDBC 抽象層,這樣開(kāi)發(fā)人員就能避免進(jìn)行一些煩瑣的JDBC編碼和解析數(shù)據(jù)庫(kù)供應(yīng)商特定的錯(cuò)誤代碼。
②spring-tx模塊支持用于實(shí)現(xiàn)特殊接口和所有POJO 類的編程及聲明式事務(wù)管理。
③spring-orm模塊為流行的對(duì)象關(guān)系映射API提供集成層,包括JPA和Hibernate。使用spring-orm模塊,可以將這些O/R映射框架與Spring提供的所有其他功能結(jié)合使用, 如前面提到的簡(jiǎn)單的聲明式事務(wù)管理功能。
④spring-oxm模塊提供了一個(gè)支持Ojbect/XML 映射實(shí)現(xiàn)的抽象層,如JAXB 、Castor 、JiBX和XStream。
⑤spring-jms模塊包含用于生成和使用消息的功能。從Spring Framework 4.1 開(kāi)始,它提供了與spring-messaging 的集成。
Web
Web層由spring-web 、spring-webmvc 、spring-websocket 和spring-webftux 組成。
①spring-web 模塊提供了基本的面向Web開(kāi)發(fā)的集成功能,如文件上傳及用于初始化IoC容器的Servlet 監(jiān)昕和Web 開(kāi)發(fā)應(yīng)用程序上下文。它也包含HTTP客戶端及Web相關(guān)的Spring 遠(yuǎn)程訪問(wèn)的支持。
②spring-webmvc 模塊(也稱Web Servlet 模塊)包含Spring 的MVC 功能和REST 服務(wù)功能。
③spring-websocket 模塊是基于WebSocket 協(xié)議通信的程序開(kāi)發(fā)。
④spring-webftux 模塊是Spring 5 新添加的支持響應(yīng)式編程的Web開(kāi)發(fā)框架。
Test
spring-test模塊支持通過(guò)組合JUnit 或TestNG 來(lái)實(shí)現(xiàn)單元測(cè)試和集成測(cè)試等功能。它不僅提供了Spring ApplicationContexts 的持續(xù)加載,井能緩存這些上下文,而且提供了可用于孤立測(cè)試代碼的模擬對(duì)象( mock objects )。
Spring設(shè)計(jì)模式
在Spring 框架設(shè)計(jì)中,廣泛使用了設(shè)計(jì)模式。Spring 使用以下設(shè)計(jì)模式使企業(yè)級(jí)應(yīng)用開(kāi)發(fā)變得簡(jiǎn)單和可測(cè)試。
① Spring 使用POJO 模式的強(qiáng)大功能來(lái)實(shí)現(xiàn)企業(yè)應(yīng)用程序的輕量級(jí)和最小侵入性的開(kāi)發(fā)。
② Spring 使用依賴注入模式(DI 模式)實(shí)現(xiàn)松耦合,并使系統(tǒng)可以更加面向接口編程。
③ Spring 使用Decorator 和Proxy 設(shè)計(jì)模式進(jìn)行聲明式編程。
④ Spring 使用Template 設(shè)計(jì)模式消除樣板代碼。
總結(jié)
以上是生活随笔為你收集整理的Spring--总体架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java8函数式编程(4)--colle
- 下一篇: Spring--SPeL