Spring Framework 5.0.x 模块组成
组件说明
1、spring Data
1)spring-jdbc
提供了一个jdbc的抽象层,包含了spring对jdbc访问数据访问进行封装的所有类
主要类:
- DriverManagerDataSource jdbc数据源配置类
- JdbcTemplate jdbc执行器
2)spring-orm
ORM的全称是Object Relational Mapping,即对象关系映射; 为流行的对象-关系映射 API ,如 JPA、Hibernate、Mybatis等,提供了一个交互层; ORM和habinate,jpa,mybaits等我们常见的与数据交互的框架是什么关系:这些是实现ORM的的几种方式
主要类:
- LocalSessionFactoryBean session对象类
3)spring-oxm
提供在Java对象和XML之间的操作
主要类:
- marshaller/unmarshaller 编组(对象转换为 XML 的过程)和解组类
4)spring-jms
Java消息传递服务,包含用于生产和使用消息的功能,集成消息中间件用
主要类:
- JmsTemplate 发送和接收消息类
5)spring-tx
事务模块,支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理。
主要类:
- TransactionAttributeSourcePointcut 确定事务拦截位置
- TransactionManager 事务管理接口
2、spring Web
1)spring-websocket
4.0以后新增的模块,实现双工异步通讯协议,实现了WebSocket和SocketJS,提供Socket通信和Web端的推送功能
主要类:
- TextWebSocketHandler 处理文本类型的socket类
2)spring-webmvc
是一个Spring内置的MVC框架,提供【模型-视图-控制】的体系结构模型,为前后端解偶
主要类:
- DispatcherServlet 前端控制器,所有的请求都有经过它来统一分发
- HandlerMapping 能够完成客户请求到Controller映射
3)spring-web
提供了基本的Web开发集成功能,例如多文件上传功能等; spring-webmvc依赖spring- web,因此包括它会传递性增加spring-web, 如果您不使用Spring MVC,但想利用Spring支持的其他与Web相关的技术,则应该仅依赖spring-web。
主要类:
- HttpRequestHandler Http请求处理器,一个专门用来处理Http请求,并生成对应的响应的处理器
4)spring-webflux
是一个新的非堵塞函数式Reactive Web框架,可以用来建立异步的,非阻塞,事件驱动的服务,并且扩展性非常好。 Spring WebFlux 是一个异步非阻塞的 Web 框架,所以,它特别适合应用在 IO 密集型的服务中,比如微服务网关这样的应用中。
3、spring-aop
提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。
主要类:
- Advice 通知接口
- PointCut 切入点
- AspectJAopUtils 切面工具
4、spring-aspects
提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架。
5、spring-instrument
是 AOP 的一个支援模块, 提供了类植入(Instrumentation)支持和类加载器的实现,可以在特定的应用服务器中使用。
主要类:
6、spring-messaging
是从 Spring4.0 开始新加入的一个模块,主要职责是为 Spring 框架集成一些基础的报文传送应用。
7、Core Container
1)spring-beans
包含访问配置文件、创建和管理 Bean 以及进行 IOC 操作相关的所有类。
项目分为五个模块:
- org.springframework.beans :
对Java Beans进行的扩展,以操作JavaBeans对象,扩展了BeanInfo、PropertyEditor等 - org.springframework.beans.factory :
轻量级的Ioc容器的核心实现 - org.springframework.beans.propertyeditors :
转换属性类型的属性编辑器的实现 - org.springframework.beans.support :
支持扩展包,对Beans的sort、hold等操作的支持 - org.springframework.beans.annotation :
支持JavaBeans在注解驱动下工作
主要类:
- BeanFactory 获取spring bean容器的根接口。其主要函数有getBean()、getBeanProvider()、containsBean()、isSingleton()、isPrototype()、isTypeMatch()、getType()、getAliases()
- FactoryBean 实现了此接口的bean不能看做一个通常意义上的bean,一个FactoryBean虽然以bean的形式来定义,但它暴露的对象(getObject())通常是它创建的对象,而不是作为一个bean实例暴露自己。
- BeanDefinitionReader bean定义解析器
- BeanDefinitionDocumentReader bean定义xml的document对象解析器
- BeanDefinitionRegistry 保存bean定义接口
- BeanDefinition bean实例的描述信息
- DefaultListableBeanFactory Spring注册及加载Bean的默认实现
- BeanDefinitionReader bean定义解析器接口
- BeanFactoryPostProcessor bean工厂后置处理器
- BeanDefinitionRegistryPostProcessor bean定义中心后置处理器
- BeanPostProcessor bean后置处理器
相关文章: Spring beans源码解析
2)spring-core
主要包含 Spring 框架基本的核心工具类,Spring 的其他组件都要用到这个包里的类,Core 模块是其他组件的基本核心;相当于一个创建并管理bean的容器
主要类:
- Assert 断言
- StringUtils 字符串工具类
- Resource 资源接口
- ResourceLoader 资源加载器接口
3)spring-context
构建在 Core 和 Beans 模块基础上,提供了类似 JNDI 注册期的框架式的对象访问方法。Context 继承了 Beans 的特性,为 Spring 和行提供了大量扩展,添加了国际化,事件传播,资源加载和 Context 的透明创建的支持。ApplicationContext 接口是 Context 模块的关键。
主要类:
- AbstractApplicationContext#refresh 核心方法,类刷新
- ApplicationContext 上下文接口
- AbstractApplicationContext ApplicationContext抽象实现
4)spring-expression
提供了强大的表达式语言,用于在运行时查询和操纵对象。支持解析表达式
主要类:
- ExpressionParser 表达式解析器
- Expression 表达式对象
8、spring-test
支持 JUnit 和 TestNG 对 Spring 组件进行测试。