共计 2953 个字符,预计需要花费 8 分钟才能阅读完成。
Spring 大概有 20 个模块,由 1300 多个不同的文件形成。这些模块能够分为外围容器、AOP 和设施反对、数据拜访与集成、Web 组件、通信报文和集成测试、集成兼容等类。Spring 5 的模块构造如下图所示。
组成 Spring 框架的每个模块都能够独自存在,也能够将一个或多个模块联结实现。上面别离介绍每类模块的组成和性能。
1 外围容器
外围容器由 spring-beans、spring-core、spring-context 和 spring-expression(Spring Expression Language,SpEL)4 个模块组成。
spring-beans 和 spring-core 模块是 Spring 框架的外围模块,蕴含了管制反转(Inversion of Control, IOC)和依赖注入(Dependency Injection,DI)。BeanFactory 应用管制反转对应用程序的配置和依赖性标准与理论的利用程序代码进行了拆散。但 BeanFactory 实例化后并不会主动实例化 Bean,只有当 Bean 被应用时,BeanFactory 才会对该 Bean 进行实例化与依赖关系的拆卸。
spring-context 模块构架于外围模块之上,扩大了 BeanFactory,为它增加了 Bean 生命周期管制、框架事件体系及资源加载透明化等性能。此外,该模块还提供了许多企业级反对,如邮件拜访、近程拜访、任务调度等,ApplicationContext 是该模块的外围接口,它的超类是 BeanFactory。与 BeanFactory 不同,ApplicationContext 实例化后会主动对所有的单实例 Bean 进行实例化与依赖关系的拆卸,使之处于待用状态。
spring-context-support 模块是对 Spring IoC 容器及 IoC 子容器的扩大反对。
spring-context-indexer 模块是 Spring 的类治理组件和 Classpath 扫描组件。
spring-expression 模块是对立表达式语言(EL)的扩大模块,能够查问、治理运行中的对象,同时也能够不便地调用对象办法,以及操作数组、汇合等。它的语法相似于传统 EL,但提供了额定的性能,最出色的要数函数调用和简略字符串的模板函数。EL 的个性是基于 Spring 产品的需要而设计的,能够十分不便地同 Spring IoC 进行交互。
2 AOP 和设施反对
AOP 和设施反对由 spring-aop、spring-aspects 和 spring-instrument 3 个模块组成。
spring-aop 是 Spring 的另一个外围模块,是 AOP 次要的实现模块。作为继 OOP 后对程序员影响最大的编程思维之一,AOP 极大地拓展了人们的编程思路。Spring 以 JVM 的动静代理技术为根底,设计出了一系列的 AOP 横切实现,比方前置告诉、返回告诉、异样告诉等。同时,Pointcut 接口能够匹配切入点,能够应用现有的切入点来设计横切面,也能够扩大相干办法依据需要进行切入。
spring-aspects 模块集成自 AspectJ 框架,次要是为 Spring 提供多种 AOP 实现办法。
spring-instrument 模块是基于 Java SE 中的 java.lang.instrument 进行设计的,应该算 AOP 的一个声援模块,次要作用是在 JVM 启用时生成一个代理类,程序员通过代理类在运行时批改类的字节,从而扭转一个类的性能,实现 AOP。
3 数据拜访与集成
数据拜访与集成由 spring-jdbc、spring-tx、spring-orm、spring-oxm 和 spring-jms 5 个模块组成。
spring-jdbc 模块是 Spring 提供的 JDBC 形象框架的次要实现模块,用于简化 Spring JDBC 操作。次要提供 JDBC 模板形式、关系数据库对象化形式、SimpleJdbc 形式、事务管理来简化 JDBC 编程,次要实现类有 JdbcTemplate、SimpleJdbcTemplate 及 NamedParameterJdbcTemplate。
spring-tx 模块是 Spring JDBC 事务管制实现模块。Spring 对事务做了很好的封装,通过它的 AOP 配置,能够灵便地在任何一层配置。然而在很多需要和利用中,间接应用 JDBC 事务管制还是有劣势的。事务是以业务逻辑为根底的,一个残缺的业务应该对应业务层里的一个办法,如果业务操作失败,则整个事务回滚,所以事务管制是应该放在业务层的。长久层的设计则应该遵循一个很重要的准则:保障操作的原子性,即长久层里的每个办法都应该是不可分割的。在应用 Spring JDBC 管制事务时,应该留神其特殊性。
spring-orm 模块是 ORM 框架反对模块,次要集成 Hibernate,Java Persistence API(JPA)和 Java Data Objects(JDO)用于资源管理、数据拜访对象(DAO)的实现和事务策略。
spring-oxm 模块次要提供一个形象层以撑持 OXM(OXM 是 Object-to-XML-Mapping 的缩写,它是一个 O /M-mapper,将 Java 对象映射成 XML 数据,或者将 XML 数据映射成 Java 对象),例如 JAXB、Castor、XMLBeans、JiBX 和 XStream 等。
spring-jms 模块可能发送和接管信息,自 Spring 4.1 开始,它还提供了对 spring-messaging 模块的撑持。
4 Web 组件
Web 组件由 spring-web、spring-webmvc、spring-websocket 和 spring-webflux 4 个模块组成。
spring-web 模块为 Spring 提供了最根底的 Web 反对,次要建设在外围容器之上,通过 Servlet 或者 Listeners 来初始化 IoC 容器,也蕴含一些与 Web 相干的反对。
家喻户晓,spring-webmvc 模块是一个 Web-Servlet 模块,实现了 Spring MVC(Model-View- Controller)的 Web 利用。
spring-websocket 模块是与 Web 前端进行全双工通信的协定。
spring-webflux 是一个新的非梗塞函数式 Reactive Web 框架,能够用来建设异步的、非阻塞的、事件驱动的服务,并且扩展性十分好。
5 通信报文
通信报文即 spring-messaging 模块,它是 Spring 4 新退出的一个模块,主要职责是为 Spring 框架集成一些根底的报文传送利用。
6 集成测试
集成测试即 spring-test 模块,次要为测试提供反对,使得在不须要将程序公布到应用服务器或者连贯到其余设施的状况下可能进行一些集成测试或者其余测试,这对于任何企业都是十分重要的。
7 集成兼容
集成兼容即 spring-framework-bom 模块,次要解决 Spring 的不同模块依赖版本不同的问题。
8 各模块之间的依赖关系
Spring 官网对 Spring 5 各模块之间的关系做了具体阐明,如下图所示。
下图对 Spring 5 各模块做了一次零碎的总结,形容了模块之间的依赖关系,心愿能对“小伙伴们”有所帮忙。
9 小测一下
本文由“Tom 弹架构”原创,转载请注明出处!技术交换请加微信号 gupaoedu-tom