Spring:笔记整理(2)——IOC容器
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容器的更多相关文章
- Spring:笔记整理(1)——HelloWorld
Spring:笔记整理(1)——HelloWorld 导入JAR包: 核心Jar包 Jar包解释 Spring-core 这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件 ...
- Spring系列14:IoC容器的扩展点
Spring系列14:IoC容器的扩展点 回顾 知识需要成体系地学习,本系列文章前后有关联,建议按照顺序阅读.上一篇我们详细介绍了Spring Bean的生命周期和丰富的扩展点,没有阅读的强烈建议先阅 ...
- spring之:XmlWebApplicationContext作为Spring Web应用的IoC容器,实例化和加载Bean的过程
它既是 DispatcherServlet 的 (WebApplicationContext)默认策略,又是 ContextLoaderListener 创建 root WebApplicationC ...
- Spring源码解析-ioc容器的设计
Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFac ...
- Spring核心原理之IoC容器初体验(2)
本文节选自<Spring 5核心原理> 1 IoC与DI基本概念 IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建.依赖,反转给容器来帮忙实现 ...
- [原创]java WEB学习笔记101:Spring学习---Spring Bean配置:IOC容器中bean的声明周期,Bean 后置处理器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 《精通Spring 4.X企业应用开发实战》读书笔记1-1(IoC容器和Bean)
很长一段时间关注在Java Web开发的方向上,提及到Jave Web开发就绕不开Spring全家桶系列,使用面向百度,谷歌的编程方法能够完成大部分的工作.但是这种不系统的了解总觉得自己的知识有所欠缺 ...
- 《Spring技术内幕》笔记-第二章 IoC容器的实现
简单介绍 1,在Spring中,SpringIoC提供了一个主要的JavaBean容器.通过IoC模式管理依赖关系.并通过依赖注入和AOP切面增强了为JavaBean这样子的POJO提供事务管理,生命 ...
- SPRING源码分析:IOC容器
在Spring中,最基本的IOC容器接口是BeanFactory - 这个接口为具体的IOC容器的实现作了最基本的功能规定 - 不管怎么着,作为IOC容器,这些接口你必须要满足应用程序的最基本要求: ...
随机推荐
- java 无状态和有状态区别
诸位Java程序员,想必大家对SimpleDateFormat并不陌生.不过,你是否知道,SimpleDateFormat不是线程安全的(thread safe).这意味着,下面的代码是错误的: ...
- LeetCode560. Subarray Sum Equals K
Description Given an array of integers and an integer k, you need to find the total number of contin ...
- Spring Boot MongoDB JPA 简化开发
使用SpringBoot提供的@Repository接口,可以完成曾经需要大量代码编写和配置文件定制工作.这些以前让新手程序员头疼,让有经验的程序员引以为傲的配置,由于框架的不断完善,变得不那么重要, ...
- 第一百九十四节,jQuery EasyUI,Droppable(放置)组件
jQuery EasyUI,Droppable(放置)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Droppable(放置)组件的使用方 ...
- jquery call 函数改变this作用域
call的用法在许多地方都看到过介绍.可以用来改变函数的作用域. 在页面中我们在一个input中添加click事件 <input id="Button1" type=&quo ...
- jmeter 参数值写入到指定的文件中[如获取token写入某文件为免登录备用]
1.编写java 类AppendFile ,代码如下 import java.io.File;import java.io.FileWriter;import java.io.IOException; ...
- 在ios中运用core animation暂停和继续动画
本文转载至 http://blog.csdn.net/wildfireli/article/details/23191861 暂停和继续动画的核心代码如下: <pre name="co ...
- VS2008试用版到期解决办法----win7下VS2008升级补丁.zip
打开好久没用的Visual studio 2008,才知道试用版已经到期了.在网上找来了序列号,可是连一个输入序列号的地方都没有,困惑了好久,终于找到了解决办法. 首先献上自己收集的Visual st ...
- ASP.NET中RegisterStartupScript和RegisterClientScriptBlock有区别吗
今天用RegisterClientScriptBlock()方法调用了alertify.js(绚丽的实现alert()同样的提示功能): Page.ClientScript.RegisterClien ...
- PowerDesigner之设置(1)
这里用到的数据库为SQL2000. PowerDesigner 16. 原始格式: (个人认为的缺点) 创建表前先将原来的表删除(创建表逻辑,假如存在则drop.假如原来有数据,用drop就有问题.新 ...