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 ...
随机推荐
- shrine
0x01 import flask import os app = flask.Flask(__name__) app.config['FLAG'] = os.environ.pop('FLAG') ...
- 如何搭建一个WEB服务器项目(二)—— 对数据库表进行基本的增删改查操作
使用HibernateTemplate进行增删改查操作 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出 ...
- vue与其他框架对比
https://cn.vuejs.org/v2/guide/comparison.html 1. vue 框架的特点? MVVM框架模式 轻量级,灵活,容易上手 数据驱动 组件化(单文件组件) 插件化 ...
- 2.5 Hello golang
编写第一个hello golang 创建空文件hello.go,尝试执行 touch hello.go go run hello.go 产生如下报错 can't load package: packa ...
- centos7安装后不能连接外网
测试外网: 1,测访问外网能力:curl -l http://www.baidu.com 2,测访问外网能力:wget http://www.baidu.com 注:ping命令不一定能正确反映系统的 ...
- Oracle数据库连接、存储过程及调用
Oracle数据库连接.存储过程及调用 1. 定义一个存储过程 create or replace procedure getuser(eid in number, na out varchar, e ...
- 欧姆龙FinsTCP与FinsUDP协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析附含报文模拟器等
前言 – Fins欧姆龙这个协议网上极少有相关的模拟器.Tcp的这一块倒是有但是Udp的基本都是不可用 1. Fins协议结构也很简单 协议分为两种 一种tcp一种udp 2. Tcp比Udp的报文会 ...
- 【python爬虫】scrapy入门7:Scrapy中runspider和crawl的区别
runspider:不依赖创建项目 命令:scrapy runspider myspider.py 等同于 pyhton myspider.py crawl:使用spider进行爬取,依赖项目创建 ...
- mac+mamp安装composer
打开终端 php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" 安 ...
- 【JVM】体系结构及其细节
JVM JVM运行在操作系统之上,与硬件没有直接的交互.引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语 ...