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 ...
随机推荐
- 【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行
1.hello micropython #MicroPython动手做(04)——零基础学MaixPy之基本示例 #程序之一:hello micropython #MicroPython动手做(04) ...
- 原生js获取元素的各种位置(大全)
加给元素: offsetLeft (距离定位父级的距离) offsetTop (距离定位父级的距离) offsetWidth (可视宽度) offsetHeight (可视高度) clientLeft ...
- Docker 部署Spring Boot 项目并连接mysql、redis容器(记录过程)
Spring Boot 项目配置 将写好的Spring Boot 项目通过maven 进行package打包获得可执行Jar 再src/main/docker(放哪都行)下编写创建Dockerfile ...
- 10.2 Go redis
10.2 Go redis redis是NoSQL数据, 不是传统的关系型数据库.linux,windows环境皆可安装. https://redis.io http://www.redis.cn r ...
- Django视图函数之三种响应模式
视图函数响应处理: from django.shortcuts import render,HttpResponse,redirect (1)render 处理模板文件,可以渲染模板,第一个参数必须为 ...
- Crystal | 水晶方法的七大特征,你了解吗?
本文摘自敏捷开发 20世纪90年代末,Alistair Cockburn提出水晶方法论. 自2001年的敏捷宣言提出以来,以极限编程为首的一系列敏捷方法逐渐走入大众视野,其中就包括水晶方法(Cryst ...
- ORA-12519,TNS:no appropriate service handler found的问题 超过连接数
http://www.2cto.com/database/201205/133542.html ORA-12519,TNS:no appropriate service handler found的问 ...
- http://blog.itpub.net/28602568/viewspace-759789/
varchar .varchar2.nvarchar.nvarchar2 -->存储可变的字符串 varchar .varchar2:varchar:汉字全角等字符占2字节,数字.字母均1个字 ...
- php连接数据库 需要下载adodb
<?include('adodb/ADOdb.inc.php'); # 加载ADODB$conn = &ADONewConnection('odbc_mssql'); # 建立一个连结$ ...
- Poj 最短路和次短路的个数 Dij+优化?。
Description Tour operator Your Personal Holiday organises guided bus trips across the Benelux. Every ...