IoC反转控制进一步认识

1、 技术概览数据库

轻量级的企业应用开发愈来愈受到广大Java应用开发者的追捧,而Spring框架又是轻量级容器的杰出表明。因为Spring的使用日渐普遍,所以已有许多应用服务器(WAS)的应用采用了Spring框架。本书先介绍Spring的依赖注入、面向切面编程、Spring抽象JDBC框架,而后介绍三大框架的整合。编程

Spring框架的核心思想咱们能够用两个字来描述,那就是“解耦”。应用程序的各个部分之间(包括代码内部和代码与平台之间)尽可能造成一种松耦合的结构,使得应用程序有更多的灵活性。应用内部的解耦主要经过一种称为控制反转(IOC)的技术来实现。控制反转的基本思想就是原本由应用程序自己来主动控制的调用等逻辑转变成由外部配置文件来被动控制。因为控制反转的概念相对比较普遍,不少应用服务器实际上也实现了不一样程度的控制反转技术,只是这些应用服务器对应用程序的侵入性太强。所以Martin Fowler专门写了一篇文章讨论控制反转这个概念,并提出一个描述更为准确的概念,叫依赖注入(Dependency Injection)。设计模式

Spring框架中的各个部分都充分使用了这种依赖注入的技术实现,从而给应用以最大的灵活度。实际上,这种依赖注入的参数化应用控制并非Spring的独创,好比IBM的多渠道应用整合平台(Branch Transformation Toolkit,BTT)很早就采用了这种外部参数化控制的技术。BTT中的“对象工厂”与Spring框架中的BeanFactory也有着殊途同归之妙。服务器

Spring框架另一个比较重要的技术是它对于面向切面的编程(AOP)的支持。随着应用复杂度的逐渐上升和对应用灵活性要求的提升,IT逻辑和业务逻辑尽可能分离的呼声也愈来愈高。AOP技术做为实现这种分离的一种比较好的途径而愈来愈受到你们的重视。Spring提供的是一种动态AOP实现,也即经过代理模式动态地在目标对象的方法先后插入相应的处理代码。应用程序与底层应用服务器平台的解耦也能够借助AOP技术来实现。Spring内置的AOP支持是一种锦上添花的功能。它使得一些原本必须由容器支持的功能,好比事务控制能够脱离开容器运行,从而达到“瘦身”的目的。这也是为何Spring框架常被人成为轻量级容器的一个缘由。架构

JDBC基于SQL,不要求咱们掌握其余框架的查询语言,简单易学,所以学习成本低。另外,在使用 JDBC 时,能够更细致地调整数据访问的性能。JDBC 还容许咱们利用数据库的特有功能,而其余框架可能不鼓励甚至禁止使用它们。 可是JDBC并不完美,不管是执行查询,更新,插入仍是删除操做, JDBC都要求咱们正确地管理链接和语句,还要处理可能抛出的SQLException,及时的释放资源。这显然形成了大量的代码重复。这彷佛印证了 Pareto 法则:只有 20% 的代码是查询操做所必需的,而80%代码是样板代码。Spring抽象JDBC框架基于模板设计模式,将上述必须都又和核心业务无关的样板代码封装到模板方法中,以简化开发,让编程人员能够将精力集中在核心业务之上。框架

Spring框架能够与许多已有的框架技术结合使用。J2EE技术应用的一个重要特色是相关的开源社区很是活跃。Web应用的不一样层次都有很是多优秀的开源框架存在。好比Web层的Struts,ORM映射层的Hibernate等。Spring框架并不从新发明轮子,它的出现不是为了替代这些已有的框架。相反,Spring框架在设计上能够独立构建应用或者结合已有的框架一块儿构建应用。另一个值得指出的地方是Spring框架的几大模块之间相互耦合度很小,所以Spring框架的使用能够根据实际须要选其部分模块按部就班的使用,而非必须通通照搬。工具

 


参考博客:http://blog.csdn.net/zhangchen124/article/details/78005056性能

本章简介学习

Spring是用于简化企业应用程序开发过程的开源框架,属于轻量级的控制反向 (IOC,即 Inversion of control)和面向切面编程 (AOP,即 Aspect Oriented  Programming)的容器框架。本章以 Spring的起源及背景为起点,介绍Spring的工做原理。而后以组装计算机为贯穿案例介绍Spring Bean的封装机制、Spring对Bean的管理,分别使用设值注入、构造注入、自动注入等方式组装Bean。最后经过一个示例介绍集合属性的使用。.net

 

Spring 是用于简化企业应用程序开发过程的开源框架,属于轻量级的控制反转 (IOC)和面向切面编程 (AOP,即 Aspect Oriented Programming)的容器框架,解决了J2EE开发中许多常见的问题。咱们须要了解一下Spring中的一些名词:

(1)轻量级:以所占大小及系统开销分析,Spring属于轻量级。整个Spring框架能够打包为 1M左右的JAR包,且系统开销较小。同时,Spring为非侵入式,若系统基于Spring开发,其所含的对象通常不依赖于Spring的类。

(2)IOC: IOC使对象被动接受依赖类,而并不是主动获取。也就是说,告诉 Spring“你”是什么,“你”须要什么对象,而后Spring会在系统运行到适当的时候,把“你”要的对象主动给“你”,同时也把“你”交给其余须要“你”的对象。全部的类的建立、销毁都由Spring来控制,控制对象生存周期的再也不是引用它的对象,而是 Spring。对于某个具体的对象而言,使用 Spring 以前是它控制其余对象,如今是全部对象都被 Spring 控制,因此叫控制反转。在系统运行中,动态的向某个对象提供它所须要的其余对象,这一点是经过DI(依赖注入)实现的。

(3)AOP:面向切面编程(也叫面向方面编程),关注系统的横向切面。通俗点说就是把代码“切开”,而后在须要的位置上动态加入公共代码。好比日志或者事务支持。

(4)容器:Spring 是一个包含且管理系统对象生命周期和配置的容器,在使用 Spring 应用开发的时候,几乎全部的 JavaBean 对象都须要 Spring 来“盛放”。Spring 容器的做用是管理对象。

(5)Spring框架:Spring可以经过简单的组件组合为复杂的系统。Spring框架为分层架构,由7个定义良好的模块组成,各模块构建于核心容器之上,核心容器定义了建立、配置及管理Bean的方式

 

(1)Spring Core:核心容器,用于提供 Spring框架的基本功能,其主要组件为 BeanFactory,是工厂模式的实现。BeanFactory使用反向控制(IOC)模式将应用程序的配置及依赖性规范与实际应用程序代码分开。

(2)Spring Context:核心模块的BeanFactory使Spring成为容器,上下文 (Context)模块使其成为框架。此模块扩展了BeanFactory的概念,增长了对国际化(I18N,即Internationalization)消息、事件的传播以及验证的支持;同时,此模块提供诸多企业服务,如电子邮件、JNDI访问、EJB集成、远程以及时序调度(Scheduling)服务,支持对模版框架 (如Velocity、FreeMarker)的集成。

(3)Spring AOP:经过配置管理特性,Spring AOP模块将面向切面编程功能集成至框架中,使Spring框架管理的任何对象均支持AOP。Spring AOP模块向基于 Spring的应用程序中的对象提供事务管理服务。此模块无需依赖于EJB组件,可使用 Spring AOP将声明式事务管理集成至应用程序中。

(4)Spring DAO:JDBC DAO抽象层提供了意义重大的异常层次结构,简化了错误处理过程并极大地减小了须要编写的异常代码 (如打开或关闭链接),运用此结构能够管理异常、处理不一样数据库供应商抛出的错误消息。Spring DAO的面向JDBC异常听从通用的 DAO异常层次结构。

(5)Spring ORM:Spring框架中插入了若干ORM框架,提供ORM的对象关系工具,包括JDO、Hibernate以及iBatis SQL Map,都听从Spring的通用事务及DAO异常层次结构。

(6)Spring Web:Web上下文模块创建在应用程序上下文模块之上,向基于Web 的应用程序提

供上下文,于是Spring框架支持与Struts集成。同时,Web模块简化了请求的处理过程以及将请求参数绑定至域对象的工做。

(7)Spring MVC:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。经过策略接口,MVC框架变为高度可配置,它容纳了大量视图技术,包括JSP、Velocity、Tiles、iText及POI等。

相关文章
相关标签/搜索