IOC容器

什么是IOC

说明

  IOC ,全称Inversion of control,即,控制反转,是一种设计思想

控制: 在Java中,IOC意味着:你将设计好的对象交给容器控制,而不是传统的在你的对象内容直接控制。 在传统程序设计中,我们直接在对象内容通过new创建对象。而IOC是有一个   专门的容器来创建这些对象,即由IOC来控制对象的创建

反转: 容器帮助我们查找及注入依赖对象,对象只是被动的接受依赖对象。

图示:


当有了IOC/DI容器后,我们就不用在客户端中主动创建这些对象了:
  

Ioc容器

说明

   IOC不是一种技术,而是一种思想。传统应用程序都是我们在类的内容部主动创建依赖对象,从而导致了类与类之间的高耦合,难于测试,现在我们有了IOC容器,把创建和查找依赖对象的控制权交给了容器,由容器进行注入对象组合,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使应用程序的着呢个体系结构变的更加灵活。

  • IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象之间的依赖。

  • IOC容器通过 读取配置文件中的配置元数据,对应用中的各个对象进行实例化及装配。

  • 一般用XML文件作为配置我文件,由于Spring与配置文件之间松耦合,可以使用注解、Java文件、属性文件等配置。

  • IOC容器管理的对象叫做,Bean对象。

类图

  

实例化Spring Ioc容器

  
  在Spring ioc容器中读取Bean配置Bean实例之前,必须对它进行实例化,只有在容器实例化之后,才可以在Ico容器里面读取Bean实例并使用它们。

IOC的配置使用

XML配置的结构

<beans>
    <import resource="resource1.xml"/>
    <!--用于导入其他配置文件的Bean定义-->
    <bean id="bean1" class="XX.XX"></bean>
    <!--用于进行Bean定义-->
    <alias alias="bean1" name="MyBean"/>
    <!--用于定义Bean别名-->
</beans>

Bean的配置

标识符配置:
Bean的ID和Name都可以作为标识符,如果ID、Names作为标识符,一个Bean可以有多个ID或Name,但是必须唯一。
如果同时指定ID和Name,那么ID是标识符而Name是别名。
实例化:
SpringIOC容器根据Bean定义里的配置元数据使用反射机制来创建Bean。
①使用构造器实例化Bean:

<bean id="bean1" class="XX.XX"></bean>
 <!--使用空构造器进行定义-->
<bean id="bean1" class="XX.XX">
    <constructor-arg index="0" value="Hello Spring"/>
</bean>
 <!--使用有参构造器进行定义,index表示位置,ref表示引用-->

②使用静态工厂实例化Bean:
说明:
  通过静态工厂方法来配置Bean,注意不是配置静态工厂实例,而是配置Bean实例!
  
►演示
1.创建静态工厂
  
2.配置Bean定义
  
3.测试
  

通过实例工厂方法实例化Bean
1.实例工厂代码
  
2.配置实例工厂,后由实例工厂Bean创建Bean

  

Spring:笔记整理(2)——IOC容器的更多相关文章

  1. Spring:笔记整理(1)——HelloWorld

    Spring:笔记整理(1)——HelloWorld 导入JAR包: 核心Jar包 Jar包解释 Spring-core 这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件 ...

  2. Spring系列14:IoC容器的扩展点

    Spring系列14:IoC容器的扩展点 回顾 知识需要成体系地学习,本系列文章前后有关联,建议按照顺序阅读.上一篇我们详细介绍了Spring Bean的生命周期和丰富的扩展点,没有阅读的强烈建议先阅 ...

  3. spring之:XmlWebApplicationContext作为Spring Web应用的IoC容器,实例化和加载Bean的过程

    它既是 DispatcherServlet 的 (WebApplicationContext)默认策略,又是 ContextLoaderListener 创建 root WebApplicationC ...

  4. Spring源码解析-ioc容器的设计

    Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFac ...

  5. Spring核心原理之IoC容器初体验(2)

    本文节选自<Spring 5核心原理> 1 IoC与DI基本概念 IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建.依赖,反转给容器来帮忙实现 ...

  6. [原创]java WEB学习笔记101:Spring学习---Spring Bean配置:IOC容器中bean的声明周期,Bean 后置处理器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. 《精通Spring 4.X企业应用开发实战》读书笔记1-1(IoC容器和Bean)

    很长一段时间关注在Java Web开发的方向上,提及到Jave Web开发就绕不开Spring全家桶系列,使用面向百度,谷歌的编程方法能够完成大部分的工作.但是这种不系统的了解总觉得自己的知识有所欠缺 ...

  8. 《Spring技术内幕》笔记-第二章 IoC容器的实现

    简单介绍 1,在Spring中,SpringIoC提供了一个主要的JavaBean容器.通过IoC模式管理依赖关系.并通过依赖注入和AOP切面增强了为JavaBean这样子的POJO提供事务管理,生命 ...

  9. SPRING源码分析:IOC容器

    在Spring中,最基本的IOC容器接口是BeanFactory - 这个接口为具体的IOC容器的实现作了最基本的功能规定 - 不管怎么着,作为IOC容器,这些接口你必须要满足应用程序的最基本要求: ...

随机推荐

  1. windows下使用python2.7.6 安装django

    1) 安装python2.7.6 2) 由于 python2.7.6 中没有安装setuptools,需要先从官网下载setuptools,下载zip包然后解压,运行 python setup.py ...

  2. ubi实际使用

    ubifs号称性能比yaffs2 好,同时压缩可读写,文件系统image体较小同时可写.1. uboot使能对UBIFS的支持#define CONFIG_CMD_NAND#define CONFIG ...

  3. Fantasy of a Summation n个数,k层重复遍历相加。求它的和%mod的值;推导公式+快速幂

    /** 题目:Fantasy of a Summation 链接:https://vjudge.net/contest/154246#problem/L 题意:n个数,k层重复遍历相加.求它的和%mo ...

  4. 中移苏研DCOS实践之路完整篇

    一.实践背景 1.1现网生产系统存在的问题 在中国移动内部各省市公司,由于技术迭代.设备更新的原因,设备繁杂,有x86server .VMware虚拟机.OpenStack虚拟机以及不同厂商的物理机( ...

  5. 深入理解yum工作原理

    前言 在前面一篇rpm包制作描述了rpm的打包过程,这篇文章主要讲述yum的工作原理. yum 运行原理 yum的工作需要两部分来合作,一部分是yum服务器,还有就是client的yum工具.下面分别 ...

  6. Hibernate生成器类

    在Hibernate中,id元素的<generator>子元素用于生成持久化类的对象的唯一标识符. Hibernate框架中定义了许多生成器类. 所有的生成器类都实现了org.hibern ...

  7. LibShortText 怎么处理中文文档

    LibShortText 是林智仁老师继 libsvm.liblinear 之后的另一力作,主要有几大特征: It is more efficient than general text-mining ...

  8. 【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住

    当点击完 finishbutton后,dbca 或者dbua hang住 来源于: DBCA/DBUA APPEARS TO HANG AFTER CLICKING FINISH BUTTON (文档 ...

  9. CentOS6.8部署SVN

    第1章 安装svn服务 1.1 准备操作系统并查看系统环境 [root@localhost ~]# cat /etc/redhat-release CentOS release 6.8 (Final) ...

  10. java中使用MD5进行加密

    java中使用MD5进行加密     在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希 ...