Spring系列1:Spring基本概念
本文内容
- 什么是Spring?
- 为什么学Spring?
- 本系列包含哪些技术?
- 本系列适合哪些人?
什么是Spring?
基本概念
Spring 框架为现代基于 Java 的企业应用程序提供了一个全面的编程和配置模型——在任何类型的部署平台上。Spring 使创建 Java 企业应用程序变得容易。它提供了在企业环境中采用 Java 语言所需的一切。目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。
优点
方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象创建和依赖的关系维护,交给Spring管理。
AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。
- 方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序。
方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持
降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC、远程调用等),都提供了封装,使这些API应用难度大大降低。
Spring体系结构

Spring 框架中包含20+模块,上图大概分5大模块简单了解下。
Core Container:包括 Core、Beans、Context、EL 模块
AOP、Aspects : AOP支持
Data Access/Intergration:该模块包括了 JDBC、ORM、OXM、JMS 和事务管理。
Web:包含了 Web、Web-Servlet、Web-Struts、Web-Porlet
Test:集成多种测试框架如Junit4/Junit5,方便测试Spring程序
| 模块 | 功能说明 |
|---|---|
| Core | 封装了框架依赖的最底层部分,包括资源访问、类型转换及一些常用工具类。 |
| Beans | 提供了框架的基础部分,包括控制反转(IOC)和依赖注入(DI) |
| Context | 以 Core 和 Beans 为基础,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期、事件传播等。核心接口是 ApplicationContext。 |
| EL | 提供强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从 Spring 容器获取 Bean,它也支持列表投影、选择和一般的列表聚合等。 |
| AOP | Spring AOP 模块提供了符合 AOP Alliance 规范的面向切面的编程(aspect-oriented programming)实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术。 |
| Aspects | 提供了对 AspectJ 的集成,AspectJ 提供了比 Spring ASP 更强大的功能。 |
| Transactions | 该模块用于 Spring 管理事务,支持编程和声明性的事务管理。 |
| JDBC | 提供了一个 JDBC 的样例模板,使用这些模板能消除传统冗长的 JDBC 编码还有必须的事务控制,而且能享受到 Spring 管理事务的好处。 |
| ORM | 提供与流行的“对象-关系”映射框架的无缝集成,包括 Hibernate、JPA、MyBatis 等。而且可以使用 Spring 事务管理,无需额外控制事务。 |
| OXM | 提供了一个对 Object/XML 映射实现,将 java 对象映射成 XML 数据,或者将 XML 数据映射成 java 对象,Object/XML 映射实现包括 JAXB、Castor、XMLBeans 和 XStream。 |
| JMS | 用于 JMS(Java Messaging Service),提供一套“消息生产者、消息消费者”模板用于更加简单的使用 JMS。JMS 用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 |
| Web | 提供了基础的 Web 功能。例如多文件上传、集成 IoC 容器、远程过程访问(RMI、Hessian、Burlap)以及 Web Service 支持,并提供一个 RestTemplate 类来提供方便的 Restful services 访问。 |
| Web-Servlet | 提供了一个 Spring MVC Web 框架实现 |
| Web-Struts | 提供了与 Struts 无缝集成,Struts 1.x 和 Struts 2.x 都支持。 |
| Test | 集成多种测试框架如Junit4/Junit5,方便测试Spring程序 |
为什么学Spring?
极大地简化开发过程
大量公司在使用
面试必备技能之一
现在Java岗位面试中,Spring必问,常见的问题: 谈谈Spring IOC的理解,原理与实现?描述一下bean的生命周期 ?
本系列包含哪些技术?
- Spring核心IoC容器的使用和原理,配合大量的案例
- Spring AOP详细使用和原理
- Spring 提供的事务
- Spring Web相关的
- Spring的各种集成功能如Task、Scheduling、Caching等
- ......
本系列适合哪些人?
- Spring新手:没有接触过Spring框架,正在入门。本系列可以带你快速入门。
- 想成为Spring高手的人:会简单使用Spring,Spring Boot ,但是知识体系不完整,停留在只知其然阶段。本系列带你全面夯实基础,达到知其然而知其所以然高度,成为Spring高手。
基本环境
- IDE: IDEA
- Maven: 3.5.6
- Spring版本: 5.2.19.RELEASE
总结
基本概念说明完毕,下一篇发车,长风破浪会有时,直挂云帆济沧海。
知识分享,转载请注明出处。学无先后,达者为先!
Spring系列1:Spring基本概念的更多相关文章
- Spring系列(七) Spring MVC 异常处理
Servlet传统异常处理 Servlet规范规定了当web应用发生异常时必须能够指明, 并确定了该如何处理, 规定了错误信息应该包含的内容和展示页面的方式.(详细可以参考servlet规范文档) 处 ...
- Spring系列之Spring常用注解总结 转载
Spring系列之Spring常用注解总结 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.x ...
- Spring系列(零) Spring Framework 文档中文翻译
Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...
- Spring系列之Spring常用注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...
- Spring系列(一) Spring的核心
Spring 简介 Spring 是一个开源轻量级企业应用架构,目的是为了简化企业级应用开发.(1)Spring 框架可以帮我们管理对象的生命周期,帮助我们管理对象间的依赖关系,相互协作:(2)Spr ...
- 【Spring系列】Spring mvc整合redis(非集群)
一.在pom.xml中增加redis需要的jar包 <!--spring redis相关jar包--> <dependency> <groupId>redis.cl ...
- Spring 系列之Spring常用注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.实物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...
- Spring系列(六) Spring Web MVC 应用构建分析
DispatcherServlet DispatcherServlet 是Spring MVC的前端控制器名称, 用户的请求到达这里进行集中处理, 在Spring MVC中, 它的作用是为不同请求匹配 ...
- 【Spring系列】Spring IoC
前言 IoC其实有两种方式,一种是DI,而另一种是DL,即Dependency Lookup(依赖查找),前者是当前软件实体被动接受其依赖的其他组件被IOc容器注入,而后者是当前软件实体主动去某个服务 ...
- 【Spring系列】Spring AOP面向切面编程
前言 接上一篇文章,在上午中使用了切面做防重复控制,本文着重介绍切面AOP. 在开发中,有一些功能行为是通用的,比如.日志管理.安全和事务,它们有一个共同点就是分布于应用中的多处,这种功能被称为横切关 ...
随机推荐
- 自定义 UITableViewCell 的 accessory 样式
对于 UITableViewCell 而言,其 accessoryType属性有4种取值: UITableViewCellAccessoryNone, UITableViewCellAccessory ...
- 初探Windows用户态调试机制
我们在感叹Onlydbg强大与便利的同时,是否考虑过它实现的原理呢? 作为一个技术人员知其然必知其所以然,这才是我们追求的本心. 最近在学习张银奎老师的<软件调试>,获益良多.熟悉Wind ...
- Java 数据类型:集合接口Map:HashTable;HashMap;IdentityHashMap;LinkedHashMap;Properties类读取配置文件;SortedMap接口和TreeMap实现类:【线程安全的ConcurrentHashMap】
Map集合java.util.Map Map用于保存具有映射关系的数据,因此Map集合里保存着两个值,一个是用于保存Map里的key,另外一组值用于保存Map里的value.key和value都可以是 ...
- SQL:利用多表更新优化子查询
原SQL: update bi_data.order_list_wxset is_start='1',proc_time=now()where 1=1and is_end='0' and 交易时间&l ...
- SpringBoot整合Light Security框架
官方git地址:https://gitee.com/itmuch/light-security/tree/master 引入maven <dependency> <groupId&g ...
- Kafka Eagle分布式模式
1.概述 最近有同学留言,Kafka Eagle的分布式模式功能怎么使用,如何部署安装?今天笔者就为大家来详细介绍一下Kafka Eagle的分布式模式功能的安装和使用. 2.内容 首先,这里我们需要 ...
- Java 8 后的新功能梳理
为什么要写这篇文章 经过了若干年的发展,Java逐步从java8升级为java11,java17. 让我们对比学习一下最新一版的LTS版本和java8比起来让代码简化了多少. 文本块(Text Blo ...
- 【LeetCode】339. Nested List Weight Sum 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 dfs 日期 题目地址:https://leetcod ...
- 【LeetCode】913. Cat and Mouse 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 参考资料 日期 题目地址:https://leetc ...
- 【LeetCode】795. Number of Subarrays with Bounded Maximum 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 暴力搜索+剪枝 线性遍历 日期 题目地址: ...