03.Spring5系统架构
Posted IT BOY
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03.Spring5系统架构相关的知识,希望对你有一定的参考价值。
目录
03 Spring5系统架构
基于Spring 5.3.4版本来说,包含了22个模块,模块可以单独存在,也可以集合多个模块存在。这些模块从大类上可以分为Core Container(核心容器),Data Access/Integration(数据访问和集成),Web,AOP(Aspect Oriented Programming),Instrumentation(设备支持),Messaging(报文发送),and Test。
Spring官方架构图如下所示。
下面是我加载了Spring源码后的截图,可以看到整个源码中包含了很多的模块。
Pt1 Core Container
由spring-core,spring-beans,spring-context,spring-context-support,spring-context-indexer 和 spring-expression构成。
-
spring-core和spring-beans是Spring框架的核心模块,包含了IoC和DI的核心实现。BeanFactory接口是Spring框架中的核心接口,是工厂模式的具体实现。BeanFactory使用IoC对应用程序的配置和依赖关系进行了解耦,BeanFactory容器实例化后不会自动实例化所有Bean,而是当Bean被使用时BeanFactory才会对该Bean进行实例化。
-
spring-context架构与核心模块只上,他扩展了BeanFactory,添加了Bean生命周期控制、框架事件体系、资源加载透明化等功能。此外还提供了许多企业级支持,如邮件访问、远程访问、任务调度等,ApplicationContext是该模块的核心接口,超类是BeanFactory,不过与BeanFactory不同的是,ApplicationContext容器实例化后会自动对所有的单实例Bean进行实例化与依赖关系的装配。
-
spring-context-support模块是对Spring IoC容器的扩展支持。
-
spring-context-indexer是对Spring的类管理组件和Classpath扫描。
-
spring-expression是统一表达式语言(EL)的扩展模块,可以查询、管理运行中的对象,同时也可以调用对象方法、操作数组、集合等。语法类似传统EL,还提供了诸如函数调用这样额外的功能。
Pt2 AOP and Instrumentation
这部分由spring-aop、spring-aspects、spring-instrument和spring-instrument-tomcat组成。
-
spring-aop是Spring核心模块,是AOP主要的实现模块。AOP是以JVM的动态代理技术为基础,设计出一系列的AOP横切实现,比如前置通知、返回通知、异常通知等,同时,Pointcut接口来匹配切入点,可以使用现有的切入点来设计切面,也可以扩展相关方法根据需求切入。
-
spring-aspects集成自AspectJ框架,主要是为Spring AOP提供多种AOP实现方法。
-
spring-instrument是基于JavaSE中java.lang.instrument进行设计的,算是AOP的支撑模块,主要作用是在JVM启用时,生成代理类,程序通过代理类在运行时修改类的逻辑,从而改变类的功能,实现AOP。
Pt3 Messaging
由spring-messa构成,从Spring4开始引入的模块。主要负责为Spring框架集成一些基础的报文传送能力。
Pt4 Data Access/Integration
数据访问和集成(Data Access/Integration)包含了JDBC、ORM、OXM、JMS和事务操作,由spring-jdbc、spring-orm、spring-oxm、spring-jms和spring-tx构成。
-
spring-jdbc是Spring提供的JDBC抽象框架的主要实现模块,用于简化Spring JDBC操作,主要提供JDBC模板方式、关系数据库对象化方式、SimpleJDBC方式、事务管理来简化JDBC编程。主要实现类有JdbcTemplate、SimpleJdbcTemplate和NamedParameterJdbcTemplate。
-
spring-tx是SpringJDBC事务控制实现模块,支持编程式和声明式事务。它对事务做了良好的封装,通过AOP配置,可以灵活的配置在任何层级。
-
spring-orm是ORM框架支持,主要集成Hibernate、JPA和JDO(Java Data Objects)用于资源管理、数据对象访问的实现和事务策略。
-
spring-oxm提供一个抽象层以支撑OXM。OXM是Object-to-XML-Mapping缩写,是将Java对象映射成XML数据,或者将XML数据映射成Java对象,例如JAXB,Castor,XMLBeans,JiBX,XStream等。
-
spring-jms能够发送和接收消息,提供了对spring-messaging的支撑。
Pt5 Web
由spring-web,spring-webmvc,spring-websocket和spring-webflux构成。
-
spring-web为Spring通了最基础的Web支持,主要建立于核心容器只上,通过Servlet或者Listeners来初始化IoC容器,也包含一些与Web相关的支持。
-
spring-webmvc是一个Web-Servlet模块,能够实现Spring MVC的Web应用。
-
spring-websocket主要是与Web前端完成全双工通讯的协议。
-
spring-webflux是新的非堵塞函数式Reactive Web框架,可以用来建立异步的、非阻塞、事件驱动的服务,扩展性非常好。
Pt6 Test
即spring-test模块,主要为测试提供支持。通过集成Junit或者TestNG提供单元测试和集成测试能力,还提供了Mock对象支持独立测试应用代码。
附录:参考资料
-
Spring官方网站:https://spring.io
-
Spring-Framework官网文档:https://docs.spring.io/spring-framework/docs
以上是关于03.Spring5系统架构的主要内容,如果未能解决你的问题,请参考以下文章