一、spring是什么,有什么用?


一句话:面向企业应用,使用javabean代替ejb的java应用或web开发。




侵入式的做法就是要求用户代码“知道”框架的代码,表现为用户代码需要继承框架提供的类。
非侵入式则不需要用户代码引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在。 
例如:
使用struts的时候,我需要继承一些struts的类,这时struts侵入到了我的代码里。
使用spring,编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时,spring就没有侵入到我业务类的代码里。
侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。但侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。
非侵入式的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。
内聚性是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标。模块中组成元素结合的越紧密,模块的内聚性就越高,模块的独立性也就越高。理想的内聚性要求模块的功能应明确、单一,即一个模块只做一件事情。模块的内聚性和耦合性是两个相互对立且又密切相关的概念。

一句话:spring是一个轻量级的非侵入式的控制反转和面向切面的容器框架。这里非侵入式是我们写的代码不会对框架产生依赖,可方便的迁移到其他地方,控制反转是说不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传给对象,面向切面是说我们开发的时候仅仅完场业务逻辑,切面分离了业务逻辑和系统级服务,这样我们就能进行内聚性的开发。



二、spring框架

spring定义了七个模块
下面我们对这个框架图进行讲解:



  











Spring自学教程-介绍、特点、框架(一)的更多相关文章

  1. Spring自学教程-ssh整合(六)

    以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!博客地址 感谢您支持我的博客,我的动力是您的支持和关注!如若转载和使用请注明转载地址 ...

  2. Spring自学教程-jabc编程详解、RowMapper使用(三)

    一.JDBC 1.JDBC的编程特点 静态代码+动态变量 = jdbc编程.在spring中动态变量可以用注入的形式给予.这样的编程方式适合包装成模板.静态代码构成了模板,而动态变量则是需要传入的参数 ...

  3. Spring自学教程-注解的使用(三)

    一.java中的注解 定义注解 下面是一个定义注解的实例. @Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documente ...

  4. Spring自学教程-AOP学习(五)

    Spring中的AOP 一.概述 (一)基本概念 1.什么是AOP?     面向方面编程.所谓方面即是指日志.权限.异常处理.事务处理等. 2.AOP的3个关键概念    (1)切入点(Pointc ...

  5. Spring自学教程-声明式事务处理(六)

    Spring事务处理分两种: 一.编程式事务:在程序中控制事务开始,执行和提交: 1.1 使用TransactionTemplate, 使用回调函数执行事务,不需要显示开始事务,不需要显示提交事务,但 ...

  6. Spring自学教程-IOC、DI、AOP(二)

    一.spring的IOC-就是怎样使用spring来创建对象 二.springDI(依赖注入)-就是怎样给属性赋值 通过set方式赋值 以下我们只需要记住两点的赋值,基本类型和引用类型的赋值 基本类型 ...

  7. Python爬虫教程-32-Scrapy 爬虫框架项目 Settings.py 介绍

    本篇介绍项目开发的过程中,对 Setting 文件的配置和使用 Python爬虫教程-32-Scrapy 爬虫框架项目 Settings.py 介绍 settings.py 文件的使用 想要详细查看 ...

  8. Python爬虫教程-30-Scrapy 爬虫框架介绍

    从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...

  9. [读后感]spring Mvc 教程框架实例以及系统演示下载

    [读后感]spring Mvc 教程框架实例以及系统演示下载 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&qu ...

随机推荐

  1. Cormen — The Best Friend Of a Man

    Cormen — The Best Friend Of a Man time limit per test 1 second memory limit per test 256 megabytes i ...

  2. SSL交互过程

    SSL交互过程 HTTPS将HTTP和SSL结合,即加了SSL隧道封装的HTTP,通过SSL对客户端身份和服务器进行验证,对传输的数据进行加密.不同情况下SSL的协商过程存在差异,本节以只验证服务器为 ...

  3. POJ 1470 Closest Common Ancestors(LCA 最近公共祖先)

    其实这是一个裸求LCA的题目,我使用的是离线的Tarjan算法,但是这个题的AC对于我来说却很坎坷……首先是RE,我立马想到数组开小了,然后扩大了数组,MLE了……接着把数组调整适当大小,又交了一发, ...

  4. elasticsearch 索引优化

    ES索引优化篇主要从两个方面解决问题,一是索引数据过程:二是检索过程.  索引数据过程我在上面几篇文章中有提到怎么创建索引和导入数据,但是大家可能会遇到索引数据比较慢的过程.其实明白索引的原理就可以有 ...

  5. vbs 截图

    'VBS截屏.vbs '  Win7x64 测试通过(已安装Word2007): '参考: '  http://qtp.blogspot.com/2010/02/screenshot-vbscript ...

  6. C++调用java

    摘要: 1 java类生成c头文件和库文件 2 对于c/c++程序,启动时先启动jvm,然后获得对应的java类的对象和方法.然后正常使用. 最近正在做一个C/C++调用java的程序,这里说的调用j ...

  7. angularjs中动态为audio绑定src

    今天在angularjs中用audio的时候碰到的这些问题,查阅http://www.cnblogs.com/rachelanlan/p/3598070.html获得解决,感谢! <div cl ...

  8. Struts2 语法--异常处理

    1. UsersDAO.java里产生一个例外: System.out.println(1/0); 2. 调用DAO的UsersAction1.java 的execute方法, 加抛异常: publi ...

  9. margin:0 auto在ie7浏览器里面无效

    把文件头改成 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w ...

  10. Win下安装Cygwin中的SSH服务

    windows和linux各有其优越性,可以安装在同一台电脑上,但切换要重启.同时拥有两台电脑,一台装win,一台装linux,自然非常好,但具备此条件的不多.本文介绍cygwin,它可以让你在win ...