Spring概述:

Spring是一个开源框架,是为了解决企业应用程序开发复杂性而开发的。

从简单性、可測试性和松耦合的角度而言,不论什么java应用都能够从Spring中受益。

简而言之,Spring就是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。

Spring主要特征:

轻量:

从大小和开销双方面而言Spring都是轻量的。此外,Spring是非侵入式的,使用Spring,我们的类还是pojo类,

全然不用继承和实现Spring的类和接口等。也就是说, Spring的应用中不依赖于实现Spirng的特定类。

IOC:

Spring之中最重要的概念之中的一个。Spring通过控制反转技术促进了松耦合。当应用了IOC,

一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找对象。能够觉得IOC与JNDI相反,

不是我们自己控制对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它,这就是注入依赖,也是控制反转。

基本上就是对象不用自己手动管理和创建,全然由容器管理,我们仅仅管用就OK了。

AOP:

Spring提供了面向切面的编程支持,AOP将与程序业务无关的内容分离提取出来,而应用对象仅仅实现他们应该做的-即完毕业务逻辑-仅此而已。

应用对象并不负责其它的系统级关注点,比如日志或者事务支持。AOP将与业务无关的逻辑横切入真正的逻辑中。

容器:

Spring包括并管理应用对象的配置和生命周期,在这个意义上它是一个容器,你能够单独配置你的每一个bean怎样被创建,可能基于一个可配置原型(prototype),你的bean能够创建一个单独的实例或者每次须要时都生成一个新的实例,以及它们是怎样关联的,同一时候Spring的容器也是轻量级的。

框架:

Spring能够将简单的组件配置,组合成复杂的应用。在Spring中,应用对象被声明式的组合。Spring也提供了非常多基础功能(事务管理、持久化框架集成等等),而用户就有很多其它的时间和精力去开发应用逻辑。

Sring的这些特征,都可以帮助我们编写更干净、更可管理、更easy測试的代码。接下来看看Spring有什么基本的长处:

借助Spring,通过依赖注入、AOP,来减少业务逻辑之间的耦合,增强系统的可扩展性。

整合其它框架,让已有的技术和框架更加easy使用。比如,利用其对hibernate、SessionFactory、事务管理的封装,更简洁的应用框架Hibernate。

使用Spring而并不全然依赖Spring,开发人员能够自由选用Spring框架的部分或者所有。

利用AOP思想,集中处理业务逻辑,降低反复代码,构建优雅的解决方式。

低侵入式设计,代码污染极低。

总结:

Spring致力于J2EE应用的各层的解决方式,而不只专注于某一层的方案。能够说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层、持久层。

尽管Spring能够一站式的解决整个项目问题,可是Spring并不想代替那些已有的框架,而是与他们无缝的整合。Spring能够减少各种框架的使用难度,它提供了对各种优秀框架-Struts2、HiernateQuartz等,的直接支持。

使用Spring的主要目的是使J2EE易用和促进好的编程习惯,Spring的目标就是让已有的技术更加易用。

所以,Spring的重要思想就是整合和兼容。

什么是Spring?Spring是什么?的更多相关文章

  1. spring spring data jpa save操作事务

    整合spring spring data jpa的时候,在save方法上加了@Transactional注解.此时调用springdatajpa save方法并不会真的把数据提交给数据库,而是缓存起来 ...

  2. 基于Spring + Spring MVC + Mybatis + shiro 高性能web构建

    一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJS,做了大量的研究,对前后端交互有了更深层次的认识. 今天抽个时间写这篇文章,我有预感,这将是一篇很详细的文章,详 ...

  3. spring + spring mvc + mybatis + react + reflux + webpack Web工程例子

    前言 最近写了个Java Web工程demo,使用maven构建: 后端使用spring + spring mvc + mybatis: 前端使用react + react-router+ webpa ...

  4. [转]基于Spring + Spring MVC + Mybatis 高性能web构建

    http://blog.csdn.net/zoutongyuan/article/details/41379851/ 一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.Angula ...

  5. Spring+Spring MVC+MyBatis

    Spring+Spring MVC+MyBatis 目录 一.新建一个基于Maven的Web项目 二.创建数据库与表 三.添加依赖包 四.新建POJO实体层 五.新建MyBatis SQL映射层 六. ...

  6. MyBatis+Spring+Spring MVC整合开发

    MyBatis+Spring+Spring MVC整合开发课程观看地址:http://www.xuetuwuyou.com/course/65课程出自学途无忧网:http://www.xuetuwuy ...

  7. 基于Spring + Spring MVC + Mybatis 高性能web构建

    基于Spring + Spring MVC + Mybatis 高性能web构建 一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJs,做了大量的研究,对前后端交互 ...

  8. maven/eclipse搭建ssm(spring+spring mvc+mybatis)

    maven/eclipse搭建ssm(spring+spring mvc+mybatis) 前言 本文旨在利用maven搭建ssm环境,而关于maven的具体内容,大家可以去阅读<Maven 实 ...

  9. Spring + Spring MVC + Hibernate

    Spring + Spring MVC + Hibernate项目开发集成(注解) Posted on 2015-05-09 11:58 沐浴未来的我和你 阅读(307) 评论(0) 编辑 收藏 在自 ...

  10. Spring + Spring MVC + Hibernate项目开发集成(注解)

    在自己从事的项目中都是使用xml配置的方式来进行的,随着项目的越来越大,会发现配置文件会相当的庞大,这个不利于项目的进行和后期的维护.于是考虑使用注解的方式来进行项目的开发,前些日子就抽空学习了一下. ...

随机推荐

  1. Ural1109_Conference(二分图最大匹配/匈牙利算法/网络最大流)

    解题报告 二分图第一题. 题目描写叙述: 为了參加即将召开的会议,A国派出M位代表,B国派出N位代表,(N,M<=1000) 会议召开前,选出K队代表,每对代表必须一个是A国的,一个是B国的; ...

  2. 服务确定撤销/删除/关闭 (ml81n)

    FUNCTION zrfc_mm006. *"---------------------------------------------------------------------- * ...

  3. python for else

    http://blog.sina.com.cn/s/blog_5357c0af01013mwn.html raw_input() 与 input() __ Python http://www.cnbl ...

  4. 重操JS旧业第八弹:面向对象与继承

    js里面没有语言语法层面的继承机制,但这并不意味着js就不能实现继承,利用js属性和方法动态性来模拟实现继承,通过总结大概有如下方法实现: 1 原型链继承 我们知道原型在对象中扮演着重要的角色,函数本 ...

  5. 14.19 InnoDB and MySQL Replication InnoDB 和MySQL 复制:

    14.19 InnoDB and MySQL Replication InnoDB 和MySQL 复制: MySQL 复制工作对于InnoDB 表和对于MyISAM表. 它是可能使用复制的方式 存储引 ...

  6. JavaScript编程:文档对象模型DOM

    5.文档对象模型DOM JS里的DOM和XML里的DOM不同,但是解析方式是一样的. document.getElementByID("id")根据ID获得元素节点. 创建和操作节 ...

  7. 如何学习php之吐槽

    我也做了php一段时间了.从技术层面上解释吧.   深入学习任何的东西都要有个体系.   1 完整的学习整个体系结构.解决有什么的问题.   推荐看看这个.http://www.open-open.c ...

  8. HDU 3068 最长回文 Manacher算法

    Manacher算法是个解决Palindrome问题的O(n)算法,能够说是个超级算法了,秒杀其它一切Palindrome解决方式,包含复杂的后缀数组. 网上非常多解释,最好的解析文章当然是Leetc ...

  9. Ceph与GlusterFS等等(80篇博客)

    http://blog.csdn.net/liuben/article/category/373751

  10. 【Android UI设计与开发】第17期:滑动菜单栏(二)开源项目SlidingMenu的示例

    通过上一篇文章的讲解,相信大家对于开源项目SlidingMenu都有了一个比较初步的了解(不了解的可以参考上 一篇文章),那么从这一章开始,博主将会以SlidingMenu为重心,给大家带来非常丰富的 ...