Spring源码1 -Spring模块总览

总有些梦想,会变成现实。

Spring官方文档地址

目前github上面最新的Spring版本是5.x,

先列出官方文档地址:

https://docs.spring.io/spring/docs/5.1.9.RELEASE/spring-framework-reference/

但是我觉得4.x版本的文档看起来更舒服:

https://docs.spring.io/spring/docs/4.3.25.RELEASE/spring-framework-reference/htmlsingle/

可以先看看4.x版本的文档,再看下5.x引入的新特性,地址:

https://github.com/spring-projects/spring-framework/wiki/What's-New-in-Spring-Framework-5.x

宁外看到一个博客介绍的也挺好的,地址:

https://www.cnblogs.com/ywlaker/p/6136625.html

1. Spring模块概览

Spring框架由大约20个模块组成的特性组成,这些模块又可以分为Core Container, Data Access/Integration, Web, AOP, 

Instrumentation,Messaging和Test模块,如下图所示:

spring overview

1. Core Container

Core container 核心容器,包含有Core、Beans、Context、和Expression Language模块。

  • Core模块主要是Spring框架基本的核心工具类,Spring的其它组件都要用到这个包里的类。
  • Beans模块包含访问配置文件、创建和管理bean以及进行IOC/DI操作相关的类
  • Context模块在Beans的基础之上,添加了对国际化(资源绑定)、事件传播、资源加载和对Context的透明创建的支持(例如,通过一个Servlet容器)。
  • Expression Language 提供了强大的表达式语言,用于在运行时查询和操纵对象

 

2. AOP

AOP模块提供了一个通用的面向切面编程的实现。

  • spring-aspects模块提供了AspectJ的集成支持
  • spring-instrument 提供了类检测支持以及在特定应用服务器上使用的类加载器
  • spring-instrument-tomcat 模块包含了为tomcat实现的spring instrumentation代理

 

3. Messaging

Spring Framework4 包含了spring-messaging模块,继承了关键的抽象例如Message,MessageChannel,MessageHandler和其它基于消息的应用提供的基础功能。这个模块也包含了一些注解用来映射 消息和方法,类似Spring MVC基于注解的编程模型。

 

4. Data Access/Integration

Data Access/Integration 层包含了JDBC、ORM、OXM、JMS和Transaction模块

  • JDBC模块提供了一个JDBC抽象层,可以消除冗长的JDBC编码和解析数据库厂家特有的错误代码,这个模块包含了Spring对JDBC操作的所有类。
  • ORM模块是流行的对象-关系映射API,如JPA、JDO、Hibernate、ibatis等,提供了一个交互层,利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射,如事务管理。
  • OXM模块提供了一个对Object/XML映射实现的抽象层,Object/XML映射实现包括JAXB、Castor、XMLBeans、JiBX和XStream
  • JMS(Java Message Service)模块主要包含生产和消费消息的一些模块
  • Transaction模块支持编程和声明式事务的管理,这些事务必须实现特定的接口,并且对所有的POJO都适用

5. Web

Web层包括 spring-webspring-webmvcspring-websocket, 和 spring-webmvc-portlet 模块

  • spring-web模块提供对web方面特性的集成,例如Multipart文件上传的支持、通过Servlet listeners初始化 IOC 容器、初始化面向web的应用上下文,它还包含一个Http客户端以及web相关的spring远程调用的支持。
  • spring-webmvc 模块包含了Spring的MVC、和为web应用实现的REST服务。Spring的MVC框架吧领域模型(domain model)代码和web表单划分开,而且提供整合spring框架的其它特性。
  • spring-webmvc-portlet 模块实现了在Portlet环境中使用的MVC,以及类似基于servlet的spring-webmvc模块的功能。

 

6. Test

spring-test模块支持基于Junit或者TestNG,对Spring组件进行单元测试和集成测试。它提供了与Spring ApplicationContexts一致的加载,以及缓存这些上下文,宁外还提供可以让你隔离测试代码的mock对象

 

2. Spring的依赖管理

spring考虑到spring的jar包较多且有各个不同的版本,开发者如果不小心错误的引用了一些jar包或者版本,将会产生一些让人困惑的错误,为了避免这些错误,Spring提供了“bom”的依赖管理(Bill Of Materials),只需要在maven项目中,引入要使用spring版本的bom,就可以避免jar包的版本混乱,具体如下:

 

例如我想使用spring的最新版本,当前是5.x,在项目pom.xml中加入

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-framework-bom</artifactId>
                <version>5.1.8.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

后续再引入需要的jar包时,就不用指定相关模块的版本号了,因为上面的spring-framework-bom依赖管理中,已经定义了各个模块应该引入的版本,比如我想引入spring-context模块和test模块

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
    </dependencies>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值