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