专栏首页码农架构Spring模块化设计:Spring功能特性如何在不同模块中组织?

Spring模块化设计:Spring功能特性如何在不同模块中组织?

Spring的模块化设计和Java 9 的模块化设计不是对等的,不过Spring 的模块化确实可以运用到Java 9 的模块化里面去 ,那是为什么呢,那是因为在Spring 的某个版本开始,它将它的模块划分为更细粒的Jar 包,这些Jar包可以按需应用分配的方式来依次依赖,比如它的核心模块Spring-core,或者Spring-JDBC或者Spring-context这些模块,按照完全统计目前已经有了大概有20多个模块

Spring Framework 中这些模块也是各司其职,然后各取所需的状态,我们在使用Spring Framework 的时候也不一定用到所有模块全部依赖进来,这和它以往最早的版本来说,它的状态是不一样的,最早的时候是把所有的东西放在一起,包括我们所说的interface21

下面是官网的模块截图

下面主要是针对Spring Framework 中的模块做简单的说明「白话讲解说明」

  • Spring-aop AOP 顾名思义就是面向接口编程
  • Spring-aspects aspects 其实就是Spring 对 aspects 的一个支持
  • Spring-beans & Spring-context Spring-beans和Spring-context都是需要通过Spring-core 来进行支持的,Spring-core 就包含了一些关于Java语法特性的支持 以及林林总总
  • Spring-expression 我们常说的就是Spring的表达式语言 ,Spring 表达式语言是从Spring3开始引入,它类似于JSP里面的EL语言(功能也是非常强大,前段时候做公式服务的时候主要核心技术就是利用Spring-expression表达式语言,后续有机会可以开详细介绍)
  • Spring-instrument spring-instrument 是Spring 2开始对我们Java的装配 ,这个装配简单点讲就是java 的agent的一个支持
  • Spring-jcl spring-jcl 是一个新模块,这个模块是从spring5开始支持,那么为什么Spring 要引用这个模块呢?因为我们知道过去运用过另一个模块,叫commons-logging,commons-logging 统一了Java的logging,就是Java 日志和log4j这个日志,那么Java logging后又出现了LogBack,LogBack是一个新型的日志框架,LogBack用到算了SL4J,SL4J就相当于说又把Java Logging和LogBack进行统一,Spring 为了解决这个情况自己研发了 一套新型的日志框架Spring-JcL,Spring-JcL就会帮Spring统一它的日志管理,我们都知道Spring 过去都是通过commons-logging 来进行日志管理这样,Spring 的支持就会依赖外面的API ,由于外部的API不断在变化 ,所以这里采用统一的方式进行处理和维护
  • Spring-JDBC spring-jdbc顾名思义就是spring 对jdbc的一个整合这里就不做过多的阐述
  • Spring-JMS JMS其实就是Java Service Message 的一个缩写,Java 的一个消息服务,这里可以对应的比如说Apache 的 Apache MQ 或者其他传统Java EE 的消息中间件 ,这部分内容只针对我们JMS的规范来进行实施的,因此它会利用到大量的JMS的API来进行实现
  • Spring-message Message 模块其实就是Spring 相对消息模块进行统一化管理,那么包括我们所说的JMS包括了 Kafka、RocketMQ、或者RabbitMQ 它都会有一个统一实现的标准,这个message和JMS有些一样,JMS过去就是希望通过统一套标准的API来统一比如说MQ或者是说w blogic MQ或者是websphere MQ的实现,那么Spring 的野心更大,它希望通过它自己的API来帮助大家实现一个最简单或者说最好用的API体验
  • Spring-orm orm就是我们比如Hibernate、JPA这种东西的一个整合,这个应该都比较熟悉
  • Spring-oxm oxm简单讲就是XML的编列 ,也就是说就是说XML的序列化和反序列化,这个是一个新的模块,Spring进行单独维护
  • Spring-test 顾名思义就是Spring的一个测试,包含了Mock对象、包括test-context比如测试上下文和test-web测试,因此通常我们引用它来说,比如:Maven里面它的scope就是test scope它就是在测试场景下特殊实现,因此不需要把它引入到你日常开发中去
  • Spring-tx tx 是 transtraction的缩写就是我们常说的Spring的事务抽象,这个对于学习Java的码友是重点也是难点的一块,那么Spring的事务抽象一则基本上借鉴了JDBC的事务实现以及Java EE 尤其是 EJB的事务实现做了一个统一的封装(Spring Framework 框架来源是基于它的作者 Rod Johnson 写过一本书就是 开发Java EE without EJB,就是不用EJB来实现 Java EE,里面讲到一个重要特点就是由于事务重现,比如测试性或者可易用性一定要依赖某个容器,所以方便度肯定不高,所以Spring提出一个tx方便我们来使用 )

下面4个部分主要是Web部分

web 、webflux、webmvc以及websocket,为什么Web要分为四个模块来进行呈现?其实问题很简单,因为spring 还想做个统一,它想做什么呢!其实在Java EE web实现也有两个实现,一个是传统的Servlet API 实现就是基于底层API接口的实现 ,另外一个方面就是JAX-RS ,什么是JAX-RS 就是Java 标准的注解的方式来驱动开发RESTful服务,Spring也是基础它们基础来开发spring-webmvc和spring-webflux ,所以你会看到Spring-webmvc和Spring-webflux里面的注解和JAX-RS的注解特别像

上面20多个模块 19个模块可以用于我们日常开发一个可用于日常测试使用

总结

通过上面的20个模块的简单分析,我们可以看出Spring目前开始把功能精细化,就是说如果我想需要Spring的某些特性,只需要增加对某个模块的依赖,这些模块可以做到按需分配

本文分享自微信公众号 - 码农架构(iByteCoding),作者:小码哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring版本特性:Spring各个版本引入了哪些新特性?

    想必不少资深Java开发的码友都对Spring各个版本引入了哪些新特性都有所了解,本篇文章主要讲述Spring 版本与Java 版本之间的关系,问题的关键就是在...

    码农架构
  • 互联网公司常用MySQL分库分表方案汇总

    不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少...

    码农架构
  • Spring IoC依赖查找:依赖注入还不够吗?依赖查找存在的价值?

    我们都知道IoC的实现大致分为两种主要实现,依赖查找和依赖注入,我们都知道Spring IoC 依赖查找可以通过名称或者ID查找,那么名称和ID在一个上下文里面...

    码农架构
  • SpringBoot与SpringMVC的区别是什么?

    Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的 ioc和 aop ioc 提供了依...

    阮键
  • 1.1 了解Spring框架 -《SSM深入解析与项目实战》

    专栏链接:https://chenhx.blog.csdn.net/category_10263372.html

    谙忆
  • 掌握13个Spring核心技术点,面试再也不会被面试官吊打!

    Spring 框架现在已经越来越受欢迎,你可以错过其他框架,但 Spring 一定不能错过!

    Java程序猿
  • 最新 Spring 系列教程,都在这了!

    以下是Java技术栈微信公众号发布的关于 Spring/ Spring MVC/ Spring Boot/ Spring Cloud 的技术干货,本文长期更新,...

    Java技术栈
  • 了解 spring 的整体架构

    POJO其实是比javabean更纯净的简单类或接口。 POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑。 POJO主要用于...

    星尘的一个朋友
  • SpringBoot v2.4.0 正式发布,支持Java15

    第一时间收到了GitHub推送的SpringBoot发版邮件,2020.11.13日正式发布了v2.4.0,这是2.4.x分支的第一个版本。

    恒宇少年
  • [译]2020年Spring状态报告

    近日VMware发布了2020年Spring状态报告,该报告调查了1000多位不同行业的springboot开发者、架构师、技术经理,以了解企业当前如何使用Sp...

    东溪陈姓少年

扫码关注云+社区

领取腾讯云代金券