Spring笔记:IOC基础

引入IOC

    在Java基础中,我们往往使用常见关键字来完成服务对象的创建。举个例子我们有很多U盘,有金士顿的(KingstonUSBDisk)的、闪迪的(SanUSBDisk),或者其他满足U盘接口的(USBDisk)。

    如果我们用new方法,那么就意味着我们的接口只能用于某种特定品牌的U盘。  

USBDisk usbdisk = new KingstonUSBDisk();

    通过上述操作,USBDisk与KingstonUSBDick就形成了耦合。换句话说,如果想用闪迪的U盘就需要修改源码才可以。如果未来又更先进的U盘,那就要修改源码了,大型系统的资源多达成百上千,如果都采用这样的方式,系统就会形成严重的耦合,不利于维护和扩展

    这时候IOC的理念来了,首先它不是一种技术,而是一种理念。假设我们不采用new方法,而是使用一种描述的方式,每一个U盘都有一段自己的描述,通过接口我们可以读入这些信息,根据这些信息注入对应的U盘,这样我们在维护源码的时候只需要去描述这些信息并提供对应的服务即可,不需要去改动源码了。

    仍然以U盘为例,如果用的是闪迪U盘,那么在信息描述段给出的就是闪迪U盘,系统会根据这个信息去匹配对应的实现类,而无需用new方法区生产实现类。同样,如果用的是金士顿U盘,那么在信息描述段给出的就是金士顿,系统也会自动生产对应的服务注入到我们的系统中,而我们只需要通过描述就可以获得资源,无需自己用new方法区创景资源和服务

IOC注入方式

    通过上述我们得知,Spring注入资源往往是通过描述来实现的,在Spring中往往是注解或者是XML描述,Spring中的IOC注入方式分为下面几种。

构造器注入

  构造方法注入是依靠类的构造去实现的,对于一些参数较少的对象可以使用这个方式注入。比如角色类(Role),它的构造方法中包含三个属性:编号(Id)、角色名称(RoleName)、备注(Note)。

  

  这样我们就描述了一个Role,它可以注入到其他资源中,但是如果构造方多,显然不是一个很好的方法,而Spring更加推荐使用setter注入。

Setter注入

  假设上面角色类中还有一个没有参数的构造方法,它的三个属性都有setter方法,那么我们就可以使用setter注入。

   

  使用setter注入更加灵活,因为使用构造方法,会疏导构造方法的参数个数、顺序这些因素干扰。侵入更加少,所以这是Spring首选的注入方式

接口注入

  Spring接口注入方式。它是一种注入其他服务的接口,比如JNDI数据源的注入,在Tomcat或者其他的服务器中往往配置了JNDI数据源,那么就可以使用接口注入我们需要的资源。

  

  它允许你从一个远程服务中注入一些服务到本地调用。

  

Spring笔记:IOC基础的更多相关文章

  1. Spring 学习笔记 IoC 基础

    Spring IoC Ioc 是什么 IoC -- Inversion of Control(控制反转)什么是控制?什么是反转? 控制反转了什么? 在很早之前写项目不用 Spring 的时候,都是在 ...

  2. Spring操作指南-IoC基础环境配置(基于注解自动装配)

    项目源码:http://code.taobao.org/p/LearningJavaEE/src/LearningSpring001%20-%20Automatically%20wiring%20be ...

  3. Spring操作指南-IoC基础环境配置(基于注解手动装配)

    Source: http://code.taobao.org/p/LearningJavaEE/src/LearningSpring002%20-%20Wiring%20beans%20with%20 ...

  4. Spring操作指南-IoC基础环境配置(基于XML)

  5. [跟我学spring学习笔记][IoC]

    IoC基础 什么是IoC Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想. ioc做什么 IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找 ...

  6. spring揭密学习笔记(3)-spring ioc容器:Spring的IoC容器之BeanFactory

    1. Spring的IoC容器和IoC Service Provider的关系 Spring的IoC容器和IoC Service Provider所提供的服务之间存在一定的交集,二者的关系如图4-1所 ...

  7. spring揭秘读书笔记----spring的ioc容器之BeanFactory

    spring的ioc容器是一种特殊的Ioc Service Provider(ioc服务提供者),如果把普通的ioc容器认为是工厂模式(其实很相似),那spring的ioc容器只是让这个工厂的功能更强 ...

  8. Spring笔记:AOP基础

    Spring笔记:AOP基础 AOP 引入AOP 面向对象的开发过程中,我们对软件开发进行抽象.分割成各个模块或对象.例如,我们对API抽象成三个模块,Controller.Service.Comma ...

  9. Spring入门IOC和AOP学习笔记

    Spring入门IOC和AOP学习笔记 概述 Spring框架的核心有两个: Spring容器作为超级大工厂,负责管理.创建所有的Java对象,这些Java对象被称为Bean. Spring容器管理容 ...

随机推荐

  1. Ros 中的多线程

      参考文献:http://blog.csdn.net/sinat_27554409/article/details/48446611 老王说ROS http://blog.csdn.net/yake ...

  2. Bmob实现android云端存储

    代码地址如下:http://www.demodashi.com/demo/12547.html 前言 一直很困惑,android到底能不能将本地数据传到一个公共的云端,让云端实现数据库功能,这样的话, ...

  3. WebScarab安装

    1.下载webscarab 下载地址:http://sourceforge.net/projects/owasp/files/WebScarab/20070504-1631/ 2.安装webscara ...

  4. Django--登录认证

    COOKIE 与 SESSION 概念 cookie的使用,不止局限于我们所使用的登录认证,cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此 ...

  5. (三)spark算子 分为3大类

    ation算子通过sparkContext执行提交作业的runJob,触发rdd的DAG执行 (foreach) foreach(f) 会对rdd中的每个函数进行f操作,下面的f操作就是打印输出没有元 ...

  6. MySQL_知识点

    1.执行顺序 语句模板: (8)SELECT (9)DISTINCT (11)<Top Num> <select list> (1)FROM [left_table] (3)& ...

  7. SPI协议介绍

    一.概述 SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制 ...

  8. 【数据挖掘】分类之kNN(转载)

    [数据挖掘]分类之kNN 1.算法简介 kNN的思想很简单:计算待分类的数据点与训练集所有样本点,取距离最近的k个样本:统计这k个样本的类别数量:根据多数表决方案,取数量最多的那一类作为待测样本的类别 ...

  9. ViewPager系列之 仿魅族应用的广告BannerView(转)

    转载:http://www.open-open.com/lib/view/open1496585426285.html 使用方法:http://www.see-source.com/androidwi ...

  10. cobbler pxe-menu

    对应的文件在 /var/lib/tftpboot/pxelinux.cfg下 如果profile的pxe-menu设置为1的话,就可以默认显示在menu上了.可以手动选择要下发哪一个profile. ...