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

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


图片

Spring Framework 中这些模块也是各司其职,而后各取所需的状态,咱们在使用Spring Framework 的时候也不必定用到全部模块所有依赖进来,这和它以往最先的版原本说,它的状态是不同的,最先的时候是把全部的东西放在一块儿,包括咱们所说的interface21web

下面是官网的模块截图spring

图片

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

  • Spring-aop  编程

    AOP 顾名思义就是面向接口编程websocket

  • Spring-aspects  aspects mvc

    其实就是Spring 对 aspects 的一个支持 app

  • Spring-beans & Spring-context   框架

    Spring-beans和Spring-context都是须要经过Spring-core 来进行支持的,Spring-core 就包含了一些关于Java语法特性的支持 以及林林总总socket

  • 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的某些特性,只须要增长对某个模块的依赖,这些模块能够作到按需分配

相关文章
相关标签/搜索