深入理解Spring4框架(一)_简介
我们共同来构建更好的企业应用。Spring帮助全世界的开发团队构建简单、便携、快速和灵活的基于JVM的系统和应用。这两句话已经足以说明Spring的目标,它针对的领域是企业应用,这套框架构建的应用有着简单、便携、快速和灵活的特点。与EJB(Enterprise JavaBean,一个基于Java平台的服务端组件框架)相比,它是一个轻量级的应用开发平台。
1、适合人群
本系列文章适合对Spring框架有使用经验的技术人员,或者对Spring有一定了解的初学者。
2、Spring的目标是什么?
Spring官方主页(http://spring.io)有两句话:
Let’s build a better Enterprise.
我们共同来构建更好的企业应用。Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications.
Spring帮助全世界的开发团队构建简单、便携、快速和灵活的基于JVM的系统和应用。
这两句话已经足以说明Spring的目标,它针对的领域是企业应用,这套框架构建的应用有着简单、便携、快速和灵活的特点。与EJB(Enterprise JavaBean,一个基于Java平台的服务端组件框架)相比,它是一个轻量级的应用开发平台。
3、认识Spring
Spring是一个企业级应用开发平台,到目前为止,围绕它有一个较为完整且成熟的应用开发生态圈,在这个生态圈中,除了Spring核心项目以外,还有很多子项目。因此,理论上,可以使用Spring的生态圈技术来开发一套完整的应用系统。
尽管JDK提供了丰富的开发功能,但是它很难将一些基础的组件块构建成一个完整的框架,它把这个任务交给了开发者和工程师。尽管开发人员可以利用工厂、抽象工厂、创建者、装饰器等设计模式将这些组件组合起来,但是其中的工作量是相当巨大的,特别是对于中小企业来说,根本没有那么多资源来做这件事情。而Spring框架已经帮我们做好了这一切,Spring框架的控制反转(IoC, Inversion of Control)组件以标准化的方式将这些分散的组件组合到一起,Spring使用了规范的设计模式,很容易将它集成到应用系统中。当前,大量的企业和机构在使用Spring框架。
4、Spring的模块
如上图所示,Spring由20多个模块组成,它们可以分为核心容器(Core Container)、数据访问/集成(Data Access/Integration)、Web、面向切面编程(AOP, Aspect Oriented Programming)、设备(Instrumentation)、消息发送(Messaging)和测试(Test)。
4.1 核心容器
核心容器包含spring-core、spring-beans、spring-context、spring-context-support和spring-expression (Spring Expression Language,Spring表达式语音)这些模块。
spring-core和spring-beans构成了框架最基础的部分,包括控制反转和依赖注入功能。BeanFactory是工厂模式的一个很成熟的实现。
spring-context是基于spring-core和spring-beans构建的,它提供了一种以框架风格来访问对象的方式,类似于JNDI注册。ApplicationContext接口是spring-context的焦点。spring-context-support为集成第三方库(如定时器Quartz)提供支持。spring-expression提供了一种强大的表达式语言,可以在运行时查询和操作对象。
4.2 AOP和设备
spring-aop模块提供了一个AOP面向切面编程的实现。比如,允许开发者定义方法拦截器和切入点,以此来将业务逻辑和系统服务进行解耦。
spring-aspects模块提供与AspectJ的集成。
spring-instrument模块提供了在普通应用服务器中使用到的类设备支持和加载器实现。spring-instrument-tomcat模块包含了Spring的Tomcat设备代理。
4.3 消息发送
Spring 4包含了一个spring-messaging模块,它对Spring集成项目Message、MessageChannel和MessageHandler进行了重要的抽象,它是基于消息发送应用的基础。
4.4 数据访问/集成
数据访问/集成层包含JDBC(spring-jdbc)、ORM(spring-orm)、OXM(spring-oxm)、JMS(spring-jms)和事务(spring-tx)模块。
4.5 Web
Web层包含spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet模块。其中,spring-web提供了面向Web集成的基本特性,比如文件上传功能。Spring-webmvc模块包含了Spring的MVC和REST Web Service实现。Spring-webmvc-portlet模块提供了在Portlet环境下的MVC实现。
4.6 测试
Spring-test模块支持Spring组建JUnit和TestNG的单元测试和集成测试。
5、为何使用Spring?
Spring的IOC和AOP两大核心功能可以大大降低应用系统的耦合性、简化开发流程。
Spring框架技术可在不同层次上起作用,比如IOC管理普通的POJO对象、AOP增强了系统服务和其它组件(事务、MVC、JDBC、ORM和远程调用等)。Spring的一大特点就是基于接口编程,它是非侵入式的服务。用户端绑定接口使用JAVA EE服务,而非直接绑定服务,而且应用也可以使用不同的服务(Hibernate、MyBatis等)。我们可以根据自己的需要,使用Spring的一部分服务,而不必使用完整的Spring系列项目。
深入理解Spring4框架(一)_简介相关推荐
- 深入理解Spring4框架(四)——依赖
一个典型的企业应用不止包含一个对象,即使是一个简单的应用,也是由几个对象合作来完成用户需要使用的功能.本节将介绍定义的Bean是如何在真实系统中配合来完成既定功能的. 依赖注入就是在对象构建完成 ...
- 一班洽谈框架细化_理解层次:框架细化篇(以供参悟)
联系合作:2521306544@qq.com 导语:将"预判之魂:理解层次"框架进行细化整理发布,提供一个宏观.微观的框架,以供给多的读者参考领悟. 序言:公众号运行9天以来,有读 ...
- DL框架之PyTorch:深度学习框架PyTorch的简介、安装、使用方法之详细攻略
DL框架之PyTorch:PyTorch的简介.安装.使用方法之详细攻略 DL框架之PyTorch:深度学习框架PyTorch的简介.安装.使用方法之详细攻略 目录 PyTorch的简介 1.pyto ...
- cutelyst教程_01 _简介
Tutorial_01_Intro 教程_01 _简介 Daniel Nicoletti edited this page on Feb 20, 2019 · 9 revisions Daniel N ...
- Android拍照录像框架Camera2使用简介
Android拍照录像框架Camera2使用简介 在Android 21时Google更新了以往的摄像头类库Camera,取而代之的是Camera2.作为更新版本,Camera2具有更强功能的同时也增 ...
- autoware框架与功能简介(一)
autoware框架与功能简介(一) Autoware.AI是世界上第一个用于自动驾驶技术的"All-in-One"开源软件.它ROS1操作系统,并在Apache2.0许可下使用. ...
- DL框架之darknet:深度学习框架darknet的简介、安装、使用方法的详细攻略
DL框架之darknet:深度学习框架darknet的简介.安装.使用方法的详细攻略 目录 darknet的简介 darknet的安装 darknet的使用方法 1.YOLO: Real-Time O ...
- DL框架之Tensorflow:深度学习框架Tensorflow的简介、安装、使用方法之详细攻略
DL框架之Tensorflow:深度学习框架Tensorflow的简介.安装.使用方法之详细攻略 目录 Tensorflow的简介 1.描述 2.TensorFlow的六大特征 3.了解Tensorf ...
- Net框架下-ORM框架LLBLGen的简介(转载)
Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址:http:/ ...
最新文章
- .NET框架程序设计-.NET框架开发平台的体系架构概览(.NET程序本质)
- python3.5怎么使用-如何在Python 3.5中使用async/await?
- db2-存储过程word版
- 通过ITypedList实现数据绑定扁平化
- [Python爬虫] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
- window server 2012 IE10 增强的安全设置 如何关闭
- Kinect2.0获取数据
- nginx服务器,访问时显示目录,不直接显示index.php
- 转:跨dll操作fopen的返回值导致出错
- 如何基于OSS和MTS,快速搭建音视频文件上传服务?
- 数学分析笔记—python基础语法
- 李彦宏:百度今年全员涨薪,比去年还多;谷歌暂停Chrome浏览器更新;Eclipse 4.15发布 | 极客头条...
- thinkphp仿素材火教程_thinkphp6学习教程与源码 tp6开源CMS系统源码研究
- Redis 外部访问设置
- 少走弯路,给3~5年java程序员的唯一一条建议
- webpack-Hot Module Replacement(热更新)
- 苹果/微软/特斯拉的产品美学——向丑而生?
- 开集识别(Open Set Recognition)
- 软考网络工程师好考吗?怎么备考?
- 清明 祭拜于形,感恩于心
热门文章
- 去掉iframe滚动条(好使!)
- 名画160 沈周《仿黄公望富春山居图》
- 华为平板5.x,Android7.0系统访问接口失败的问题。
- miui10 android 唤醒,小米再次推送MIUI10最新版,修复小爱同学唤醒功能,没理由不升级...
- 抖音带货什么产品都能带吗,抖音快手直播卖货技巧!
- 三、 网际互联的网络层——网际控制【计算机网络全景梳理系列】
- 用python脚本分类和改名照片和视频
- 轻笔记显示无法连接服务器,轻笔记OAuth2文档.doc
- python3抓取数据_python3抓取到的拉勾数据统计
- 浏览器中渲染3D对象