spring是什么?

  • spring是一个开源框架,最初是为了解决企业应用开发的复杂性而创建的,但现在已经不止应用于企业应用。
  • 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    - 从大小与开销两方面而言Spring都是轻量的。

    - 通过控制反转(IoC)的技术达到松耦合的目的。

    - 提供了面向切面编程的丰富支持,允许通过允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。应用只实现业务逻辑即可,并不负责其它的系统级关注点。

      解释:比如说,做一个商品的管理,商品的入库、出库就是业务逻辑,系统服务是,比如说入库、出库都要统一的日志的记录,和事物的管理那么这种就属于系统服务,它是和具体的业务逻辑是无关的,无论什么样的业务都会使用到的服务都把它称为系统服务。

    - 包含并管理应用对象的配置和生命周期,这个意义上是一种容器。

    - 将简单的组件配置、组合成为复杂的应用,这个意义上是框架。

为什么是Spring?

  • 在Spring上开发应用简单
      我们把对象的创建、销毁,对象的生命周期交给Spring来做,所以说是简单的。
  • 在Spring上开发应用方便
      我们把所有的对象管理交给了Spring,到用的时候,只需要告诉Spring你想要什么实例,它就会给你什么实例,所以非常方便的。
  • 在Spring上开发应用快捷
      正是因为Spring替我们管理了这些对象,而且由于它面向接口编程的理念的应用,使得我们在开发的过程中是快捷的,省去了我们管理对象的过程。

  所以Spring带来了复杂JavaEE开发的春天!

Modules

从这幅图中我们可以看出来Spring的整体架构,主要分为六大模块

Core Container

  核心部分分为4大块,spring-core, spring-beans, spring-context, spring-expression. 其中core和bean是整个框架的核心,提供了基础的DI和IoC功能。 Context建立在core和beans模块之上,提供一种类似JNDI且以框架的方式来操作对象的方式。Context模块从beans模块继承它的功能同时增加了国际化支持,如资源绑定等,同时,Context模块也支持JavaEE功能,如EJB,JMX和基本的远程调用。ApplicationContext接口是context模块的焦点。expression是一种很强大的expression language,支持在运行时查询和操作对象的属性,我们会在后面的文章中举些例子来说明spring expression language的用法。

AOP and instrumentation

  Aop模块提供了面向切面编程的实现,和AspectJ集成。

Messaging

  Messaging是spring4新增加的模块,包含了一部分主要的基于message的应用的实现。

Data Access/Integration

  Data access顾名思义,是spring对数据层提供的支持,是功能比较丰富的模块。提供了包括JDBC,事物,ORM,JMS等一系列实现。

Web

  Web模块主要提供面向web的一些实现,例如多文件上传,servlet监听器以及spring mvc方面的支持。

Test

  Test模块主要是针对spring的各个模块做各种各样的测试,包括单元测试、集成测试等等。

Spring作用

  •  容器
  •  提供了对多种技术的支持
      - JMS
      - MQ支持
      - UnitTest
      - 。。。。。。
  •  AOP(事物管理、日志等)
  •  提供了众多方便应用的辅助类(JDBC Template等)
  •  对主流应用框架(Hibernate等)提供了良好的支持

适用范围

  •  构建企业应用(SpringMVC+Spring+Hibernate/MyBatis(ibatis))
  •  单独使用Bean容器(Bean管理)
  •  单独使用AOP进行切面处理
  •  其他的Spring功能,如:对消息的支持等
  •  在互联网中的应用。

文章出自:艺意

Spring概况(一)相关推荐

  1. Spring入门简介

    Spring概况 Spring的简介 Spring是一个轻量级的控制反转和面向切面的容器框架,它主要是为了解决企业应用开发的复杂性而诞生的: 目的:解决企业应用开发的复杂性 功能:使用基本的javaB ...

  2. spring源码分析之spring-web remoting模块概况及基本概念

    spring-web总体分为三部分:caucho.httpinvoker.jaxws,其总体构造图如下: uml结构: 先看看网上搜索到的上述实现的原理吧:Spring RMI,Hessian/Bur ...

  3. Spring Data JPA 从入门到精通~javax.persistence概况介绍

    虽然 Spring Data JPA 已经对数据的操作封装的很好了,约定大于配置的思想,帮我们默认了很多东西.JPA(Java 持久性 API)是存储业务实体关联的实体的来源,它显示了如何定义一个面向 ...

  4. spring mvc 总体概况

    1.配置web.xml 启动springmvc     <!--启动 spring mvc-->     <servlet>           <servlet-nam ...

  5. [Spring 深度解析]第6章 Spring的IoC容器系列

    6. Spring的IoC容器系列 ​ IoC容器为开发者管理对象之间的依赖关系提供了很多便利和基础服务.有许多IoC容器供开发者选择,SpringFramework的IoC核心就是其中一个,它是开源 ...

  6. Spring Integration学习资料

    Spring Integration学习资料 1.1     背景 Spring框架的一个重要主题是控制反转.从广义上来说,Spring处理其上下文中管理的组件的职责.只要组件减轻了职责,它们同时也被 ...

  7. spring remoting源码分析--Hessian分析

    1. Caucho 1.1 概况 spring-remoting代码的情况如下: 本节近分析caucho模块. 1.2 分类 其中以hession为例,Hessian远程服务调用过程: Hessian ...

  8. spring定时器(@Scheduled)

    spring定时器需要额外添加下面配置 一.配置文件 xmlns 额外添加下面的内容: xmlns:task="http://www.springframework.org/schema/t ...

  9. spring与cxf的整合

    1.倒入cxf所需要的包(其中包括spring的支持) 2.编写SEI与服务 package cn.itcast.ws.pojo; import java.util.Date; public clas ...

  10. 基础概念总结(spring security、Quartz、JUnit测试)

    1.Spring Security 的大体框架和原理 (1)在web.xml中配置过滤器,这样就可以控制这个项目的每个请求.  (2)在applicationContext.xml配置,其中http标 ...

最新文章

  1. go监听mysql事件更新,有没有一种方法可以“监听”数据库事件并实时更新页面?...
  2. 85.Mongoose指南 - Schema
  3. .NET Framework 4.0源代码
  4. 美团自研无人机登场:15分钟配送到家
  5. cygwin的安装使用
  6. 好程序员Web前端分享一些小知识!
  7. Python黑帽子-实现netcat基本功能(改进版)
  8. WinHex脚本命令教程--中文版
  9. uigetfile使用方法
  10. 清理电脑垃圾的七个BAT文件
  11. 史上最简单的教程——“21天”自学C语言
  12. 从底层谈webgis原理设计与实现(二)探究本质,WebGIS前端地图显示之地图比例尺换算原理...
  13. iOS 播放器静音设置方法
  14. 网站建设流程是什么?
  15. 用js写卡牌游戏(五)
  16. 新一轮产业革命和行业转型加快,行业人才需求显著增加
  17. 苹果三代耳机_p360 AirPods Pro 苹果三代耳机
  18. 提质信创•协同发展—— 麒麟信安云+操作系统交流会(武汉站)顺利举行
  19. 关于maven更新超时问题显示报错
  20. Android 音视频开发(三) -- Camera2 实现预览、拍照功能

热门文章

  1. 025_MapReduce样例Hadoop TopKey算法
  2. (转)uml 交互视图
  3. 贝叶斯定理决策规则及Bayes思想总结
  4. DRmare Audio Converter Mac - DRM音频清除转换工具
  5. Arturia Analog Lab for Mac - 原始混合合成器
  6. cargo 使用国内源镜像,引用 substrate 的 Contracts Pallet Crate 编译错误
  7. iOS 数组与字符串的相互转化
  8. JavaScript静态页面值传递之URL篇
  9. ReactNative集成百度语音合成
  10. 存储网络性能岂能只靠“猜”