spring中大约包含20过个模块, 主要包括以下几部分:

1. Core Container

Core Container(核心容器)包含Core,Beans,Context和Expression Language模块

Core和Beans是spring的基础部分,提供IOC和依赖注入的特性, 基础概念是BeanFactory, 它提供对Factory模式的经典实现来消除对程序性单列模式的需求,并使得可以程序从逻辑中分离出依赖关系和配置.

Core: 主要包含spring框架基本的核心工具类, core模块是其他组件的基本核心.

Beans: beans模块是所有应用都要用到的, 它包含访问配置文件,创建和管理bean以及进行IOC/DI操作相关的所有类.

Context: 在core和bean的基础上, 提供了一种类似于JNDI(Java命名和目录接口,所有与系统外部的资源的引用,都可以通过JNDI定义和引用https://www.cnblogs.com/shawnblogs/p/5279733.html), Context继承了Beans的特性,为spring核心提供了大量的扩展,添加了国家化,时间传播,资源加载和EJB以及JMX的支持, 其中ApplicationContext接口是Context的核心.

Expression Language: 是jsp规范中定义的unifed expression language的一个扩展, 用于在运行时查询和操作对象, 支持设置/获取属性的值, 属性的分配, 方法的调用,访问数组上下文等操作.

2.Data Access/Integration

JDBC: 提供一个JDBC抽象层,消除冗长的JDBC编码和解析数据库厂商特有的错误代码, 包含了对jdbc数据库访问进行封装的所有类

ORM: 对象-关系映射API, 如JPA, JDO, Hibernate, Mybatis等, 提供了一个交互层, 利用ORM进行封装, 可以混合使用所有Spring提供的特性进行O/R映射.

JMS: 主要包含一些制造和消费信息的特性.

Transaction: 对事务的管理, 这些事务必须实现特定的接口, 并且对所有的POJO都使用.

3.Web模块

WEB模块提供对常见框架如Struts,JSF的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器。

web: 提供基础的面向web的集成特性,如文件上传,使用servlet listeners初始化IOC容器以及一个面向web的应用上下文.

web-servlet: 包含Spring的model-view-controller(MVC)实现, Spring的MVC框架使得模型范围内的代码和web forms之间能够清楚的分开, 并与Spring框架的其他特性集成在一起.

web-struts: 提供对struts的支持, 是的类在Spring应用中能够与一个典型的struts web层集成在一起.

4.AOP

AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此,这种散布在各处的无关的代码被称为横切(cross cutting),在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。

AOP技术恰恰相反,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

使用"横切"技术,AOP把软件系统分为两个部分:核心关注点横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

Aspects: 提供了对AspectJ的集成支持

Instrumentation: 提供了Class instrumentation支持和classloader实现,使得可以在特定的应用服务器上的使用.

Join point(连接点):在应用程序中它代表一个点

Pointcut(切入点):这是一组一个或多个连接点,通知应该被执行

Advice(通知): 这是实际行动之前或之后执行的方法

Introduction(引用):引用允许添加新方法或属性到现有的类中

Target object(被通知对象):被一个或者多个方面所通知的对象,这个对象永远是一个被代理对象.

Weaving:Weaving 把方面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象,这些可以在编译时,类加载时和运行时完成.

5. Test

Test模块支持使用Junit和TestNGINX对Spring组件进行测试

2.spring的主要模块作用的更多相关文章

  1. spring cloud各个模块作用

    Eureka Client:负责将这个服务的信息注册到Eureka Server中.Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号.ribbon:负载均衡,获 ...

  2. Spring模块作用

    0.模块整理 Spring模块整理(http://www.kuqin.com/shuoit/20150805/347434.html) 模块名 作用 资料 aop  spring的面向切面编程,提供A ...

  3. Spring之WEB模块

    Spring的WEB模块用于整合Web框架,例如Struts 1.Struts 2.JSF等 整合Struts 1 继承方式 Spring框架提供了ActionSupport类支持Struts 1的A ...

  4. Spring Boot 多模块项目创建与配置 (一) (转)

    Spring Boot 多模块项目创建与配置 (一) 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多个模块.代码中的多模块是用maven管理的,每个模块都 ...

  5. Spring boot 多模块项目 + Swagger 让你的API可视化

    Spring boot 多模块项目 + Swagger 让你的API可视化 前言 手写 Api 文档的几个痛点: 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时. 接口返回结果不 ...

  6. Spring Boot 多模块项目创建与配置 (一)

    最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多个模块.代码中的多模块是用maven管理的,每个模块都使用spring boot框架.之前有零零散散学过一些 ...

  7. 【转】详解spring 每个jar的作用

    spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...

  8. Spring Boot 多模块项目创建与配置 (转)

    转载:https://www.cnblogs.com/MaxElephant/p/8205234.html 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多 ...

  9. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块

    spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可 ...

随机推荐

  1. LeetCode 686. 重复叠加字符串匹配(Repeated String Match)

    686. 重复叠加字符串匹配 686. Repeated String Match 题目描述 给定两个字符串 A 和 B,寻找重复叠加字符串 A 的最小次数,使得字符串 B 成为叠加后的字符串 A 的 ...

  2. [转帖]IOC Security: Indicators of Attack vs. Indicators of Compromise

    IOC Security: Indicators of Attack vs. Indicators of Compromise https://www.crowdstrike.com/blog/ind ...

  3. python标准库之glob介绍

    python标准库之glob介绍 glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合. 1.通配符 星号(*)匹配零个或多个字符 import glob for name in glob ...

  4. 隐藏GridControl的“Drag a column header here to group by that column”

    打开设计器,找到OptionsView,往下拉设置showGroupPanel为false

  5. 【C#】上机实验三

    实验1: 定义一个 TimePeiod 类 包含: hour , minute , second 实现时间的在 时分秒上的加法. using System; using System.Collecti ...

  6. 从docker中备份oracle和mongo数据

    从docker中导出Oracle数据 这里推荐先把脚本文件放到容器里面(这里没有) #!/bin/sh # 进入容器 # 本机备份位置 /root/oracleData/dist/temp # 当前日 ...

  7. Educational Codeforces Round 66 (Rated for Div. 2)

    A.直接模拟. #include<cstdio> #include<cstring> #include<iostream> #include<algorith ...

  8. logback 生成 catalina.base_IS_UNDEFINED 问题处理 &如何在eclipse/idea中添加VM参数

    1>在Eclipse中里设置  windows->preferences->Java->Installed JRES->edit->Default VM Argum ...

  9. 深入理解JVM(四) -- 垃圾内存回收的判定方法和内容

    上一篇文章我们学到了对象在内存中是如何存储的已经是如何被访问的,这篇文章将介绍当内存空间不够时,虚拟机将怎样判定对象可不可以被回收已经哪些地方会发生回收. 垃圾回收主要(不是全部)发生在堆内存中,当一 ...

  10. 用less查看日志文件

    一般程序部署在Linux环境,查看日志时,一般用less满足大部分的需求. 列举.记录最常用的场景,代码以Tomcat日志文件catalna.out为例. 1. > 直接查看文件 less ca ...