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

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

Spring 模块化设计 (Modular)—>Spring模块

spring-aopspring-aspectsspring-beansspring-context-indexerspring-context-supportspring-contextspring-core
spring-expressionspring-instrumentspring-jclspring-jdbcspring-jmsspring-messagingspring-orm
spring-oxmspring-testspring-txspring-webspring-webfluxspring-webmvcspring-websocket
  1. spring-aop: 面向切片编程

  2. spring-aspects: aspects 其实就是 spring 对 aspects 的一个支持

  3. spring-beans: spring-beans 和 spring-context 合成起来就是 spring ioc 的一个重要的核心实现, 无论是 spring-beans 还是 spring-context 它都是需要通过 spring-core 来进行支持的 spring-core包含了一些关于 Java 语法特性的支持以及林林总总

  4. spring-expression: spring 表达式语言, spring 表达式语言是从 spring 3 开始进行引入的, 它类似于 JSP 中的 EL 语言

  5. spring-instrument: Spring 2 开始持之的对我们 Java 装配, 这个装配简单来讲就是 Java 的 agent 的一个支持

  6. spring-jcl: spring-jcl 是一个新模块, 这个模块是从 spring 5 开始支持的, 为什么 spring 要引入这个模块, 因为我们过去运用过另外一个模块, 就是关于 commons-logging, commons-logging是统一了 Java 的 logging 就是 Java 的日志 和 Log4j 这个日志, 那么 Java Logging 之后又出现了一个 Logback, Logback 它是一个新型的日志框架又用到了 SLF4J, SLF4J 相当于说又把 Java Logging, Log4j, Logback进行了统一, spring 为了解决这个情况它自己用了一套新型的日志框架, 就是我们说的 JCL 这个框架, 这个框架会帮助 spring 来统一它的日志管理, 我们知道 spring 过去就是用 commons-logging来进行支持的, 因此通常而言 spring 的支持会依赖于外部 API 由于外部的 API 会在日志方面的不断变化, 所以它这里去采用统一的方式来进行维护

  7. spring-jdbc: 就是 spring 对JDBC的一个整合

  8. spring-jms: jms 其实是 Java Message Service 的一个缩写, 比如说 Java 的一个消息服务, 这里会对应的比如说 Apache 的 ActiveMQ 或者其他传统的 Java EE 的消息中间件, 这部分内容只针对于说 JMS 的规范来进行实施的, 因此, 它会利用到大量的 JMS 的 API 来进行实现

  9. spring-messaging: 这个模块就是针对于 spring 想统一一下消息服务的一个实现, 包括了我们说的 JMS 和 Kafka, RocketMQ, RabbitMQ, 它都会有一个统一的实现的一个标准, 这个东西也和 JMS 一样的, JMS 过去是希望通过一套标准的 API 来统一, 比如说 MQ 或者是比如说 WebLogic MQ 或者是 WebSphere MQ 的一个实现, spring野心更大, 它希望通过它自己的 API 来帮助大家实现一个最简单或者是最好用的一个 API 的体验

  10. spring-orm: orm 就是比如说 Hibernate, JPA 这种东西的一个整合

  11. spring-oxm: oxm 简单来讲就是 XML 编列就是 marshal 和 unmarshal 这么一个东西, 也就是说这是 XML 里面的序列化和反序列化, 这个东西是一个新模块, spring 进行一个单独的维护

  12. spring-test: 它就是 spring 的一个测试, 这个测试包括了 Mock 对象, 包括了 TestContext 测试上下文, 还包括 spring 的 MVC 的测试, 以及 Web Client 的测试, 就是 web 客户端的测试, 这部分的内容都放在 spring-test 里面, 通常来说引用它 Maven 里面它的 scope 就是 test scope, 也就是说它是在测试场景下面的特殊实现的, 因此你不需要引用到你的日常开发里面来, 就是不需要引用到你的日常部署里面来

  13. spring-tx: tx 就是 transaction 的缩写, 就是我们常说的 spring 的事务抽象, 这部分是非常重点, 也是非常难点的一块, 其实 spring 事务抽象, 它是基本上借鉴了 JDBC 的一部分一个事务实现以及 Java EE 尤其是 EJB 的一个事务实现来做一个统一的封装, 这个好处在什么地方呢? 其实 spring 的框架源于是它的作者 Rod Johnson 写过的一本书就是开发 Java EE without EJB 就是不用 EJB 来开发 Java EE, 它里面讲了一个特点就是由于事务的重现, 比如说测试性或者是可易用性, 一定要依赖与某个容器, 所以这个的方便度肯定不高, 所以 spring 提出了一个 tx, transaction 的一个抽象, 方便我们来进行使用

  14. spring-web/spring-webflux/spring-webmvc/spring-websocket: 为什么web会有4个模块来进行呈现? 因为 web 其实 spring 还想统一, 就是 web 这一块我也想统一, web 这里其实在 Java EE 时代有两个方面来进行呈现, 一个是传统的 Servlet API, 就是基于底层的 API 的接口实现, 来进行实现的, 另一方面是 JAX-RS, 就是 java 标准的注解的方式驱动来开发 REST 服务, 这个东西也是另外一个标准, spring 其实也是借鉴在他们基础上面来开发出 spring webmvc 和 spring flux , 所以flux 和 mvc 里面的注解和 JAX-RS 非常像, 也就是说 Java 标准注解来是非常像的, 你会发现一些借鉴上面的一个程度, 那么与此同时当然了, spring 在 web socket 方面他也做了一些提升, 比如说 web socket API 它觉得不好用, 这个时候它做了一些新的封装来帮你来管理它的 Session, 管理它的消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只因为你温柔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值