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. 在开发中,有一些功能行为是通用的,比如.日志管理.安全和事务,它们有一个共同点就是分布于应用中的多处,这种功能被称为横切关 ...
随机推荐
- BIT 常态化在线CTF系统 pwn题目
偶然得到这个平台,发现是BIT的CTF平台,应该是平时的阶段性的训练题目.看了看题,其他方向的题目感觉都是入门题,但是pwn题目,发现还是比入门题难一点点的,来记录一下. pwn1 栈上任意位置的读写 ...
- C++ happens-before 关系是不可传递的
P0668R4 对此进行了解释 The definition of plain happens-before became unpleasantly complicated with the intr ...
- Django-利用LogEntry生成操作历史
在开发测试平台的时候,虽然对某些关键功能做了权限设置,但毕竟是公司多人使用,有些数据的配置可能不小心被他人修改但未告知其他使用者,造成了诸多不便.所以决定开发一个操作历史表,可以方便查看数据地改动. ...
- myeclipse 安装spket
myeclipse 安装spket为以下步骤 请注意:1.myPlugins为新建的文件夹 2.spket-1.6.23为新建的文件 如上步骤为安装spket,那么如下的步骤为让myeclipse里的 ...
- svn服务器用户名密码更改后,如何更新本地用户名密码
在提交时,IDE会给出这样的提示,说明用户名密码已更改 在命令行输入 svn ls https:XXX(项目的地址),具体步骤如下图
- 基于 SoC 的卷积神经网络车牌识别系统设计(1)概述
NOTES: 这是第三届全国大学生集成电路创新创业大赛 - Arm 杯 - 片上系统设计挑战赛(本人指导的一个比赛).主要划分为以下的 Top5 重点.难点.亮点.热点以及创新点:1.通过 Arm C ...
- 【九度OJ】题目1047:素数判定 解题报告
[九度OJ]题目1047:素数判定 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1047 题目描述: 给定一个数n,要求判 ...
- 【LeetCode】869. Reordered Power of 2 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典统计每位数字出现的次数 日期 题目地址:http ...
- CRB and His Birthday(hdu 5410)
CRB and His Birthday Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- HDC2021技术分论坛:“积木拼装”,HarmonyOS弹性部署大揭秘!
作者:peitaiyi,华为终端OS产品交付专家 HarmonyOS是一款面向万物互联时代的.全新的分布式操作系统.在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力.适配多种终 ...