第1章-Spring的模块与应用场景
Spring 框架可以为 Java 应用程序开发提供全面的基础设施支持,它是现在非常流行的 Java 开源框架,对于一个 Java 开发人员来说,熟练掌握 Spring 是必不可少的。
控制反转(IoC)和依赖注入(DI)
IoC/DI 是 Spring 的核心设计模式,它的所有组件和功能,都是基于这一模式设计的。IoC 意味着你设计好的对象交给容器控制,而不是在你的对象内部直接控制,而各个对象之间的依赖关系,是在容器运行期间决定的,容器动态地将依赖关系注入到组件中,且不关心具体的对象或资源来自何处,这大大降低了对象间的耦合度。
一、Spring模块
Spring 框架的模块:

1. 核心模块
| 名称 | 功能 |
|---|---|
spring-core |
提供 IoC 和 DI 等功能 |
spring-beans |
提供 Bean 容器等功能 |
spring-context |
基于 core 和 beans 模块构建,扩展了功能 |
spring-context-support |
支持整合第三方工具 |
spring-expression |
提供 SpEL 表达式支持 |
2. AOP模块
| 名称 | 功能 |
|---|---|
spring-aop |
提供 AOP(面向切面编程)支持 |
spring-aspects |
提供 AspectJ 的集成 |
spring-instrumentation |
提供类植入和类加载器的实现 |
3. 消息模块
| 名称 | 功能 |
|---|---|
spring-messaging |
提供消息功能支持 |
4. 数据访问模块
| 名称 | 功能 |
|---|---|
spring-jdbc |
提供 JDBC 抽象层来代替原生 JDBC 功能 |
spring-tx |
提供编程式和声明式事务管理 |
spring-orm |
提供主流的 ORM 框架 API 支持 |
spring-oxm |
提供支持对象/XML映射抽象层 |
spring-jms |
提供支持生产和消费的消息功能 |
5. Web模块
| 名称 | 功能 |
|---|---|
spring-web |
提供 Web 功能支持 |
spring-webmvc |
提供 Web 应用程序的 MVC 和 REST Web Services 支持 |
spring-websocket |
提供 Web Socket 支持 |
6. 测试模块
| 名称 | 功能 |
|---|---|
spring-test |
提供 JUnit 或 TestNG 等主流单元测试框架的集成 |
二、集成功能
Spring 对一些常用的功能组件都会基于 IoC/DI 模式来进行封装,简化其使用方式,以便开发人员开箱即用,不仅可以提高开发效率,还降低了耦合,提高了测试性和可移植性。
1. 目标原则
目标:
- 为复杂的企业集成解决方案提供简单的模型
- 便于开发基于异步、消息驱动行为的应用
- 使现有 Spring 用户更直观、更循序渐进地使用
原则:
- 降低组件的耦合度,增加了模块化和可测试性
- 强制区分业务逻辑和组件集成逻辑
- 扩展点是抽象的,增加了扩展性和可移植性
2. 支持组件
Endpoint
AMQP
Spring ApplicationEvent
File
FTP/FTPS Adapters
HTTP
JDBC
JPA
JMS
Mail
MongoDb
MQTT
Redis
Resource
RMI
RSocket
SFTP Adapters
STOMP
Stream
Syslog
TCP and UDP
WebFlux
WebSockets
Web Services
XML
Zookeeper
三、应用场景
Spring 框架由多个模块构成,它不是一个全有或者全无的解决方案,我们完全可以按照需求使用它的全部或者部分特性。
1. 典型完整的 Spring Web 应用程序

Spring 完整使用场景:基于 Tomcat Servlet 容器,Web 层、业务层和数据持久层都使用 Spring 模块实现。
2. 使用第三方 Web 框架的应用程序

整合第三方 Web 框架:基于 Tomcat Servlet 容器,Web 层使用 Struts 等其他框架,业务层和数据持久层都使用 Spring 模块实现。
3. 基于 RPC 的应用程序

RPC 应用程序:基于 Tomcat Servlet 容器,使用Spring的 Hessian-,Rmi- 或HttpInvokerProxyFactoryBean 类构建远程调用程序。
4. 基于 EJB 的应用程序

EJB 应用程序:Spring 提供访问层和抽象层来管理 EJB。
比如我们通常使用的 SSM 框架和 SSH 框架就是 Spring 框架和第三方框架的组合形式:
| Web 层 | 业务层 | 数据持久层 | |
|---|---|---|---|
| SSM | SpringMVC | Spring | MyBatis |
| SSH | Struts | Spring | Hibernate |
不管我们怎么搭建应用程序框架,Spring 都能很好的集成到我们应用程序中。
第1章-Spring的模块与应用场景的更多相关文章
- 第1章—Spring之旅—Spring模块介绍
Spring模块介绍 Spring7大核心模块: 核心容器(Spring Core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系.S ...
- Java开发工程师(Web方向) - 04.Spring框架 - 第1章.Spring概述
第1章.Spring概述 Spring概述 The Spring Framework is a lightweight solution and a potential one-stop-shop f ...
- 第01章 Spring概述
第01章 Spring概述 1.Spring概述 ①Spring是一个开源框架 ②Spring为简化企业级开发而生,使用Spring,JavaBean就可以实现很多以前要靠EJB才能实现的功能.同样的 ...
- Spring企业级程序设计 • 【第7章 Spring框架整合】
全部章节 >>>> 本章目录 7.1 模型数据解析及控制器返回值 7.1.1 SSM框架环境搭建 7.1.1 ModelAndView多种用法 7.1.2 整合MyBati ...
- 【Java EE 学习 78 上】【数据采集系统第十天】【Service使用Spring缓存模块】
一.需求分析 调查问卷中或许每一个单击动作都会引发大量的数据库访问,特别是在参与调查的过程中,只是单击“上一页”或者“下一页”的按钮就会引发大量的查询,必须对这种问题进行优化才行.使用缓存策略进行查询 ...
- SpringInAction读书笔记--第1章Spring之旅
1.简化Java开发 Spring是一个开源框架,它的根本使命在于简化java开发.为了降低java开发的复杂性,Spring采取了以下4种关键策略: 基于POJO的轻量级和最小侵入性编程 ...
- 第一章 Spring整体框架和环境搭建
1.Spring 的整体架构 Spring框架主要由7大模块组成,它们提供了企业级开发需要的所有功能,而且每个模块都可以单独使用,也可以和其他模块组合使用,灵活且方便的部署可以使开发的程序更加简洁灵活 ...
- Spring的模块组成
Spring的模块组成 1.核心容器:核心容器提供 Spring 框架的基本功能(Spring Core).核心容器的主要组件是 BeanFactory,它是工厂模式的实现. BeanFactory ...
- 2017.2.28 activiti实战--第七章--Spring容器集成应用实例(五)普通表单
学习资料:<Activiti实战> 第七章 Spring容器集成应用实例(五)普通表单 第六章中介绍了动态表单.外置表单.这里讲解第三种表单:普通表单. 普通表单的特点: 把表单内容写在 ...
- 第4章 Spring的数据库开发
4.1 Spring JDBC Spring的JDBC模块负责数据库资源管理和错误处理,化简了开发者对数据库的操作. 4.11 Spring JdbcTemplate的解析 * JdbcTemplat ...
随机推荐
- winform,隐藏窗体
public Form1() { InitializeComponent(); this.WindowState = FormWindowSt ...
- MasaFramework -- 锁与分布式锁
前言 什么是锁?什么是分布式锁?它们之间有什么样的关系? 什么是锁 加锁(lock)是2018年公布的计算机科学技术名词,是指将控制变量置位,控制共享资源不能被其他线程访问.通过加锁,可以确保在同一时 ...
- Python-Django模板
前面将hello world输出给浏览器,将数据与 视图 混合在一起,不符合 MVC思想. 模板就是一个文本,用来分离文档的表现形式和内容. 在templates目录下创建一个html模板 然后需要向 ...
- jmeter性能测试之正则提取响应头或者响应体
准备工作做好,先发送请求 然后察看结果树中的响应消息 比如我们要提取这个cookie,先调试一下,看能不能提取到 看蓝色的线条,我们提取到了,然后我们把这句话写入到后置处理器中的正则表达式提取里 再次 ...
- Lua脚本在Redis事务中的应用实践
使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断.事务中的命令要么全部 ...
- 《Thinking In Java》作者:不要使用并发!
前言 今天纯粹就是带你们来读读书的~ 最近除了工作,特地买回了自己很喜欢的作者新发售的一本书<On Java>,作者是我的老朋友布鲁斯·埃克尔,在Java领域很有名,你可能没听过他的名字, ...
- 分布式ID详解(5种分布式ID生成方案)
分布式架构会涉及到分布式全局唯一ID的生成,今天我就来详解分布式全局唯一ID,以及分布式全局唯一ID的实现方案@mikechen 什么是分布式系统唯一ID 在复杂分布式系统中,往往需要对大量的数据和消 ...
- PAT (Basic Level) Practice 1025 反转链表 分数 25
给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则输出应该 ...
- day44-反射03
Java反射03 3.通过反射获取类的结构信息 3.1java.lang.Class类 getName:获取全类名 getSimpleName:获取简单类名 getFields:获取所有public修 ...
- CentOS 7.9 安装 redis-6.2.0
一.CentOS 7.9 安装 redis-6.2.0 1 下载地址:https://download.redis.io/releases/redis-6.2.0.tar.gz 2 安装gcc来进行编 ...