Spring基本介绍
一:Spring是什么
Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,它以IOC控制反转和AOP面向切面编程为核心,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术;还有个强大之处就是可以整合众多的第三方开源框架和类库,所以逐渐成为使用最多的 Java EE 企业级应用的开源框架。
full-stack:
full-stack 的设计,意味着各层能够无缝的集成在一起,遵循的DRY原则(don't repeat yourself),将各层共用的东西,抽取出来,并通过自顶向下的设计,无缝的集成在一起,粘合在一起,达到更高层次、更粗粒度的重用,同时为了保证灵活的可扩展性,在更高、更粗的粒度上遵守开放-封闭的原则,在各层的各个关键点,要提供诸多的钩子,回调的接口,供使用者扩展。full-stack的设计,在层与层之间,并不一味的追求松散的机制,而是相反,在层与层之间增强一定的内聚性,粘合力,以此来达到粗粒度的封装与重用。full-stack 的设计,其爆发出的威力是巨大的,相对普通的单一层面的设计,在开发效率上不是一个层次上的,基于28原理的设计,可以满足80的调用者直接开发,19%的调用者,通过扩展点进行扩展来满足需求,对于1%钻角尖的需求,自己去造轮子。Spring就是使用这样的设计,我们设计如果以它们为中心,生产力可以极大提高
IOC(Inversion of Control):
IOC是控制反转,它不是一种技术,而是一种设计思想,IOC将你设计好的对象交给容器管理,而不是再内部直接创建出来
AOP(Aspect Orient Programming):
AOP是面向切面编程,可以说面向对象编程OOP是从静态角度考虑程序结构,而面向切面编程AOP是从动态角度考虑程序运行结果
二:Spring起源
1997 年 IBM 提出了 EJB 的思想1998 年,SUN 制定开发标准规范 EJB1.01999 年,EJB1.1 发布2001 年,EJB2.0 发布2003 年,EJB2.1 发布2006 年,EJB3.0 发布Rod Johnson(spring 之父)Expert One-to-One J2EE Design and Development(2002)阐述了 J2EE 使用 EJB 开发设计的优点及解决方案Expert One-to-One J2EE Development without EJB(2004)阐述了 J2EE 开发不使用 EJB 的解决方式(Spring 雏形)2017 年 9 月份发布了 spring 的最新版本 spring 5.0 通用版(GA)
在最初的EJB 1 时代(EJB 简单来说就是把已经编写好的程序/类打包放在服务器上执行),可谓说是一个”黑暗“时代,正好也是一个J2EE规范统治的时代,基于各种容器和 J2EE 规范的软件解决方案是唯一的“正道”,沉重的研发模式和生态让那个时代的开发者痛苦不堪。可是随着经典巨著《Expert One-on-One J2EE Design and Development》的诞生,重规范时代终于迎来了一线曙光,该书的作者 Rod Johnson 在书中阐述了轻量级框架的研发理念,对原有笨重的规范进行了抨击,并基于书中的理念推出了最初版的 Spring 框架,Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-on-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。所以延续至今已达 10 多年之久
三:Spring的优势特点
1:方便解耦,简化开发(IOC)
Spring内部提供IOC容器,可以将对象间的依赖关系交由Spring进行控制,避免类与类之间的过度依赖而产生程序耦合。用户不必再编写单例模式类、属性文件解析等底层的代码需求,Spring IOC可以让我们可以更专注与上层业务逻辑代码
2:AOP 编程的支持
3:声明式事务的支持
4:方便程序的测试
5:方便集成各种优秀框架
6:降低 JavaEE API 的使用难度
7:Java 源码是经典学习范例
四:Spring体系结构

上图是 Spring 框架的所有模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选择性地使用所需要的模块。下面分别对这些模块的作用进行简单介绍。
1. Data Access/Integration(数据访问/集成)
数据访问/集成层包括 JDBC、ORM、OXM、JMS 和 Transactions 模块
①:JDBC 模块:
提供了一个 JDBC 的抽象层,大幅度减少了在开发过程中对数据库操作的编码。
②:ORM 模块:
对流行的对象关系映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成层。
③:OXM 模块:
提供了一个支持对象/XML 映射的抽象层实现,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
④:JMS 模块:
指 Java 消息服务,包含的功能为生产和消费的信息。
⑤:Transactions 事务模块:
支持编程和声明式事务管理实现特殊接口类,并为所有的 POJO。
2:Web模块
Spring 的 Web 层包括 Web、Servlet、Struts 和 Portlet 组件
①:Web 模块:
提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IoC 容器初始化以及 Web 应用上下文。
②:Servlet模块:
包括 Spring 模型—视图—控制器(MVC)实现 Web 应用程序。
③:Struts 模块:
包含支持类内的 Spring 应用程序,集成了经典的 Struts Web 层。
④:Portlet 模块:
提供了在 Portlet 环境中使用 MV C实现,类似 Web-Servlet 模块的功能。
3:Core Container(核心容器)
Spring 的核心容器是其他模块建立的基础,由 Beans 模块、Core 核心模块、Context 上下文模块和 Expression Language 表达式语言模块组成
①:Beans 模块:
提供了 BeanFactory,是工厂模式的经典实现,Spring 将管理对象称为 Bean。
②:Core 核心模块:
提供了 Spring 框架的基本组成部分,包括 IoC 和 DI 功能。
③:Context 上下文模块:
建立在核心和 Beans 模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext 接口是上下文模块的焦点。
④:Expression Language 模块:
是运行时查询和操作对象图的强大的表达式语言。
4:其它模块
Spring的其他模块还有 AOP、Aspects、Instrumentation 以及 Test 模块
①:AOP 模块:
提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性。
②:Aspects 模块:
提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。
③:Instrumentation 模块:
提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
④:Test 模块:
支持 Spring 组件,使用 JUnit 或 TestNG 框架的测试。
.
Spring基本介绍的更多相关文章
- Spring Batch 中文参考文档 V3.0.6 - 1 Spring Batch介绍
1 Spring Batch介绍 企业领域中许多应用系统需要采用批处理的方式在特定环境中运行业务操作任务.这种业务作业包括自动化,大量信息的复杂操作,他们不需要人工干预,并能高效运行.这些典型作业包括 ...
- [翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续
英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.ht ...
- Spring 的介绍和目标
1. Spring介绍 打开Spring 官网查看对 Spring 的介绍和目标 http://www.springsource.org/about We believe that: · J2EE s ...
- Spring的介绍与搭建
一.Spring的介绍 二.Spring的搭建 (1)导包 (2)创建一个对象 (3)书写配置注册对象到容器 (4)代码测试
- Spring Shell介绍
最近开发中在下遇到了spring-shell开发工具的项目,现在整理了相关文章,以供大家学习 本博客相关的文章均是在Spring Shell 1.2.0的基础上建立 Spring Shell介绍 ...
- Spring DevTools 介绍
Spring DevTools 介绍 Spring Boot包括一组额外的工具,可以使应用程序开发体验更加愉快. spring-boot-devtools模块可以包含在任何项目中,它可以节省大量的时间 ...
- 第1章—Spring之旅—Spring模块介绍
Spring模块介绍 Spring7大核心模块: 核心容器(Spring Core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系.S ...
- Spring Security 介绍与Demo
一.Spring Security 介绍 Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块的默认技术选型.我们仅需引入spring-boot-s ...
- [转帖]微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务 http://skaka.me/blog/2016/04/21/springcloud1/ APR 21ST, ...
- Spring 框架介绍
Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – I ...
随机推荐
- JS作用域和变量提升看这一篇就够了
作用域是JS中一个很基础但是很重要的概念,面试中也经常出现,本文会详细深入的讲解这个概念及其他相关的概念,包括声明提升,块级作用域,作用域链及作用域链延长等问题. 什么是作用域 第一个问题就是我们要弄 ...
- tp5参数传入
把应用配置文件中的url_param_type参数的值修改如下: // 按照参数顺序获取 'url_param_type' => 1, 现在,URL的参数传值方式就变成了严格按照操作方法的变量定 ...
- 未联网下,在eclipse中编辑xml文件如何自动提示设置
断网情况下,用eclipse编辑xml文件如何自动提示? 以编辑hibernate中的xml为例: 首先,我们都知道xml提示是引用.dtd文件的. 1.复制这个dtd路径,设置eclipse属性,搜 ...
- 微信小程序入门知识点总结
微信小程序入门知识点总结 前情介绍 微信小程序就不多介绍了,我们想要开发微信小程序首先得到微信公众平台 下方的小程序处注册相关账号并登录,接着填写小程序相关资料.在设置处可找到AppID用以开发微 ...
- 快速配置Samba服务
1.安装samba 这里以CenOS 7为例,其他系统类似 yum install samba samba-client samba-common 2.修改smb.conf 最好先备份原文件,以防 ...
- 关于hadoop3.x MR报错:找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
用的apache Hadoop3.X,今天运行MR报错: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster 关键需要配置两个配置:ma ...
- poj2823单调队列认知
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 62930 Accepted: 17963 ...
- 玩转java反射
玩玩JAVA反射 什么是反射 Java反射机制是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法:对于任何一个对象,都能够调用它的任何一个方法和属性:这样动态获取新的以及动态调用对象的方法 ...
- Android中的成员变量与局部变量
简单说一下吧, note:java中的成员变量就是c++中的全局变量 1.可以在全局范围内使用:局部变量只能在其定义的方法里使用. 2.成员变量可以不赋初值使用,调用时有系统的默认的初值,比如int类 ...
- Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html
Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...