我们共同来构建更好的企业应用。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框架(一)_简介相关推荐

  1. 深入理解Spring4框架(四)——依赖

     一个典型的企业应用不止包含一个对象,即使是一个简单的应用,也是由几个对象合作来完成用户需要使用的功能.本节将介绍定义的Bean是如何在真实系统中配合来完成既定功能的. 依赖注入就是在对象构建完成 ...

  2. 一班洽谈框架细化_理解层次:框架细化篇(以供参悟)

    联系合作:2521306544@qq.com 导语:将"预判之魂:理解层次"框架进行细化整理发布,提供一个宏观.微观的框架,以供给多的读者参考领悟. 序言:公众号运行9天以来,有读 ...

  3. DL框架之PyTorch:深度学习框架PyTorch的简介、安装、使用方法之详细攻略

    DL框架之PyTorch:PyTorch的简介.安装.使用方法之详细攻略 DL框架之PyTorch:深度学习框架PyTorch的简介.安装.使用方法之详细攻略 目录 PyTorch的简介 1.pyto ...

  4. cutelyst教程_01 _简介

    Tutorial_01_Intro 教程_01 _简介 Daniel Nicoletti edited this page on Feb 20, 2019 · 9 revisions Daniel N ...

  5. Android拍照录像框架Camera2使用简介

    Android拍照录像框架Camera2使用简介 在Android 21时Google更新了以往的摄像头类库Camera,取而代之的是Camera2.作为更新版本,Camera2具有更强功能的同时也增 ...

  6. autoware框架与功能简介(一)

    autoware框架与功能简介(一) Autoware.AI是世界上第一个用于自动驾驶技术的"All-in-One"开源软件.它ROS1操作系统,并在Apache2.0许可下使用. ...

  7. DL框架之darknet:深度学习框架darknet的简介、安装、使用方法的详细攻略

    DL框架之darknet:深度学习框架darknet的简介.安装.使用方法的详细攻略 目录 darknet的简介 darknet的安装 darknet的使用方法 1.YOLO: Real-Time O ...

  8. DL框架之Tensorflow:深度学习框架Tensorflow的简介、安装、使用方法之详细攻略

    DL框架之Tensorflow:深度学习框架Tensorflow的简介.安装.使用方法之详细攻略 目录 Tensorflow的简介 1.描述 2.TensorFlow的六大特征 3.了解Tensorf ...

  9. Net框架下-ORM框架LLBLGen的简介(转载)

    Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址:http:/ ...

最新文章

  1. .NET框架程序设计-.NET框架开发平台的体系架构概览(.NET程序本质)
  2. python3.5怎么使用-如何在Python 3.5中使用async/await?
  3. db2-存储过程word版
  4. 通过ITypedList实现数据绑定扁平化
  5. [Python爬虫] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
  6. window server 2012 IE10 增强的安全设置 如何关闭
  7. Kinect2.0获取数据
  8. nginx服务器,访问时显示目录,不直接显示index.php
  9. 转:跨dll操作fopen的返回值导致出错
  10. 如何基于OSS和MTS,快速搭建音视频文件上传服务?
  11. 数学分析笔记—python基础语法
  12. 李彦宏:百度今年全员涨薪,比去年还多;谷歌暂停Chrome浏览器更新;Eclipse 4.15发布 | 极客头条...
  13. thinkphp仿素材火教程_thinkphp6学习教程与源码 tp6开源CMS系统源码研究
  14. Redis 外部访问设置
  15. 少走弯路,给3~5年java程序员的唯一一条建议
  16. webpack-Hot Module Replacement(热更新)
  17. 苹果/微软/特斯拉的产品美学——向丑而生?
  18. 开集识别(Open Set Recognition)
  19. 软考网络工程师好考吗?怎么备考?
  20. 清明 祭拜于形,感恩于心

热门文章

  1. 去掉iframe滚动条(好使!)
  2. 名画160 沈周《仿黄公望富春山居图》
  3. 华为平板5.x,Android7.0系统访问接口失败的问题。
  4. miui10 android 唤醒,小米再次推送MIUI10最新版,修复小爱同学唤醒功能,没理由不升级...
  5. 抖音带货什么产品都能带吗,抖音快手直播卖货技巧!
  6. 三、 网际互联的网络层——网际控制【计算机网络全景梳理系列】
  7. 用python脚本分类和改名照片和视频
  8. 轻笔记显示无法连接服务器,轻笔记OAuth2文档.doc
  9. python3抓取数据_python3抓取到的拉勾数据统计
  10. 浏览器中渲染3D对象