《SpringFramework5》文档笔记

Spring 框架

Spring 框架是一个 Java 平台,为开发 Java 应用程序提供全面的基础架构支持。

一、Spring 的核心:依赖注入和控制反转

Java 平台提供了丰富的应用程序开发功能,但是缺乏将基本模块整合为一个整体的功能。

Spring 为开发者提供一个一站式的轻量级应用开发框架(平台)。

在 JavaEE 的应用开发中,支持 POJO 和 使用 JavaBean 的开发方式,是应用面向接口开发,充分支持面向对象的设计方法。

1. 依赖注入

对象和对象之间的依赖关系,如果由对象自身管理,那么会导致代码的高度耦合和测试性的降低。

对象的依赖关系常常体现在对数据和方法的依赖上。

如 A 对象需要使用 B、C、E 对象的属性或方法,通常情况下,我们会通过 new 的方式来使用,但如果 B、C、E 又同时依赖了 D、E、F 对象呢。

而将这些依赖关系,通过对象的依赖注入交给 IoC 容器来完成,则可以很大程度上简化该复杂性。

2. 控制反转

控制反转,指的是责任的反转,即对象的依赖转到 IoC 容器中。

原本由对象自身去管理依赖对象,但是现在对象的依赖全部由 IoC 容器管理。

二、Spring 中的模块

Spring 框架的功能被有组织的分散到约 20 个模块中,这些模块分布在核心容器数据访问/集成WebAOPInstrumentation消息传输测试中。

Spring Framework中的模块

1. 核心容器

  • spring-core 和 spring-beans 模块
    • 提供了框架的基础功能,包括 IOC 和 *依赖注入 *的功能
    • BeanFactory 是一个成熟的 工厂模式 的实现,将依赖关系的配置和描述从程序逻辑中解耦出来,使使用者无需再通过编程去实现单例模式
  • spring-context 模块
    • 该模块建立在 spring-core 和 spring-beans 的基础之上
    • 提供一个框架式的对象访问方式
    • 上下文模块从 spring-beans 模块继承其功能,并添加支持了如:国际化事件传播资源负载透明创建上下文等,还支持 JavaEE 的功能(如 EJB、JMX 和远程的处理)
    • spring-context-support 模块支持整合第三方库到 Spring 应用程序上下文中,特别是用于高速缓存(ehcache、JCache)调度(CommonJ、Quartz)的支持
    • ApplicationContext 接口是 spring-context 模块的核心
  • spring-expression 模块
    • 提供了强大的表达式语言去支持查询和操作运行时对象图
    • 对 JSP2.1 规范中的 EL 表达式的扩展
    • 支持设置和获取属性、属性分配、方法调用、访问数组、集合和索引的内容、逻辑和算术运算、变量命名以及从 IOC 容器中以名称检索对象
    • 还支持列表投影和选择,以及常见的列表聚合

2. AOP

  • spring-aop 模块
    • 提供了一个符合 AOP 的面向切面的编程实现
    • 允许定义方法拦截器和切入点,能够用来解耦应该被分离的功能
  • spring-aspects 模块
    • 提供了与 AspectJ 的集成
  • spring-instrument 模块
    • 提供了类植入(instrument)支持 和类加载器的实现,可以应用在特定的应用服务器中
    • spring-instrument-tomcat 模块支持 Tomcat 的植入代理

3. 消息集成

  • spring-messaging 模块
    • 消息传递模块,包含来自 Spring Integration 的项目,如 Message、MessageChannel、MessageHandler 和其它用于传输消息的基础应用

4. 数据访问/集成

  • spring-jdbc 模块
    • 提供了一个 JDBC 的重选 ing,消除了繁琐的 JDBC 编码和数据库特有的错误解析
  • spring-tx 模块
    • 支持用于实现特殊接口和所有 POJO 的类的编程
    • 声明式事务管理
  • spring-orm 模块
    • 为对象关系映射(Object-Relational Mapping) API 提供集成层,包括 JPA 和 hibernate
    • 可以将 O/R 映射与 Spring 提供的其他功能结合使用,如声明式事务
  • spring-oxm 模块
    • 提供一个支持 对象/XML 映射的抽象层
  • spring-jms 模块
    • 用于生产和消费消息的功能
    • 4.1 版本之后,提供与 spring-messaging 的集成

5. Web

  • spring-web 模块
    • 提供基本的面向 Web 的集成功能
    • 如多部分文件上传、初始化一个 Servlet 监听器、面向 Web 的 ApplicationContext 的 IoC 容器
    • 包含一个 HTTP 客户端和 Spring 的远程支持的 web 部分
  • spring-webmvc 模块
    • 包含用于 Web 应用的 Spring 的 模型 - 视图 - 控制 (MVC)
    • Rest Web Services 的实现
  • spring-websocket 模块
    • WebSocket 支持

6. 测试

  • spring-test 模块
    • 支持 JUnit 或 TestNG 对 Spring 组件进行 单元测试集成测试
    • 提供 Mock 对象
    • 提供 Spring ApplicationContext 的一致加载和上下文缓存

三、使用场景

Spring 的特点:

  • Spring 是一个非侵入性框架,其目标是使应用程序代码对框架的依赖最小化,应用代码可以在没有 Spring 或其他容器的情况下运行
  • Spring 提供了一个一致的编程模型,使应用直接使用 POJO 开发,从而可以与运行环境隔离
  • Spring 改进了体系结构的选择,Spring 可以帮助我们选择不同的技术实现,如 hibernate 到 mybatis,struts 到 springmvc 等,降低了平台锁定的风险(虽然一般不会这样做)
文章作者: koral
文章链接: http://luokaiii.github.io/2019/11/30/后端/SpringFramework5/2-介绍/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自