spring 简介

  • spring简介

Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring使开发者能够编写更干净、更可管理、并且更易于测试的代码。它具有以下几个作用

  1. 方便解耦,简化开发。
  2. AOP编程的支持。
  3. 声明式事务的支持。
  4. 方便程序的测试。。
  5. 方便集成各种优秀框架。
  6. 降低Java EE API的使用难度。
  • spring 的结构和组件

在比较老的3.1.3版本的spring中,spring的模块如下:


spring模块

一个模块基本代表一个功能,比如我们在spring中经常使用的JdbcTemplate,实际上就是jdbc模块的代码;SpringMVC是web模块的功能。我们可以在我们的项目中引用一个或者多个模块(maven的dependency)来完成我们的业务需求。


结构图

核心组件

spring-core 和 spring-beans

spring-core包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心。spring-beans实现了springIoC(依赖注入),所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / DependencyInjection(IoC/DI)操作相关的所有类。spring-core依赖commons-logging包。spring-beans依赖spring-core包。

spring-context和spring-context-support

Context包,构建于Core包上,提供了一种框架式访问对象的方式,有点像JNDI注册。Context封装包继承了beans包的功能,还增加了透明创建上下文(通过servlet容器),国际化(I18N),事件传播,资源装载等功能。spring-context-support是spring-context的扩展支持,包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(JavaMail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。

非核心组件

spring-aop和spring-aspect

这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的其它Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。

spring-jdbc ,spring-dao,spring-orm

spring-jdbc包含对Spring对JDBC数据访问进行封装的所有类;spring3以上已经找不到spring-dao了,这是因为spring-dao被放到了spring-transaction里面去了;spring-orm包含Spring对DAO特性集进行了扩展,使其支持 iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。
这个jar文件里大部分的类都要依赖spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar包。

spring-web和spring-webmvc

Web包提供了基本的面向Web的综合特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的applicationcontext。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。
Web MVC提供了面向Web应用的Model-View-Controller实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。

spring-transaction(spring-tx)

提供对事务的支持。

  • spring的核心思想

控制反转IOC(Inverse of Control)

控制反转是一种在软件工程中解耦合的思想,调用类只依赖接口,而不依赖具体的实现类,减少了耦合。控制权交给了容器,在运行的时候才由容器决定将具体的实现动态的“注入”到调用类的对象中。

依赖注入(Dependnecy Injection)

依赖注入是一种设计模式,可以作为控制反转的一种实现方式。依赖注入就是将实例变量传入到一个对象中去(Dependency injection means giving an object its instance variables)。
通过IoC框架,类A依赖类B的强耦合关系可以在运行时通过容器建立,也就是说把创建B实例的工作移交给容器,类A只管使用就可以。

面向切面编程(AOP)

在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,663评论 18 139
  • 1.1 spring IoC容器和beans的简介 Spring 框架的最核心基础的功能是IoC(控制反转)容器,...
    simoscode阅读 6,717评论 2 22
  • 前言:最近学习了Spring框架,就此总结下心得体会 一. Spring简介: 什么是Spring?Spring是...
    xdMango10969阅读 494评论 0 2
  • 1、《不找了》歌手:郭旭 2014-12-01发行,收录于《郭旭的Demo》 沧桑、有故事的嗓音绝对会让你第一...
    ice白先森阅读 827评论 7 5
  • Q:已经保存了用户名的机器,如何修改用户名和密码? 测试环境 ubuntu16.04 解决步骤注意:以下是用vim...
    xuyaoli阅读 1,465评论 0 0