前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring模块化设计:Spring功能特性如何在不同模块中组织?

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

作者头像
码农架构
修改2020-10-27 18:50:48
1K0
修改2020-10-27 18:50:48
举报
文章被收录于专栏:码农架构

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的某些特性,只需要增加对某个模块的依赖,这些模块可以做到按需分配

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档