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容器,这些接口你必须要满足应用程序的最基本要求: ...
随机推荐
- connect()
#include <sys/types.h> #include <sys/socket.h> int connect(int sockfd, const str ...
- tcp3握手,作用,syn攻击
tcp建立链接3次握手: 1.客户端→服务端,发送seq=x,syn=1 2.服务端→客户端,发送seq=y,syn=1,ack=x+1 3.客户端→服务端,发送seq=z,ack=y+1 三次握手作 ...
- java 无状态和有状态区别
诸位Java程序员,想必大家对SimpleDateFormat并不陌生.不过,你是否知道,SimpleDateFormat不是线程安全的(thread safe).这意味着,下面的代码是错误的: ...
- Linux 总结2
cd pwd mkdir ...
- pycharm2018.1.4激活破解方法与汉化包-2018年6月19日
记录下来备用,顺便分享给大家,有能力的还是希望能够支持正版!支持正版!支持正版! 方法1:激活服务器,最简单快速(截止2018年6月19日可用) 在激活Jetbrains旗下任意产品的时候选择激活服务 ...
- oracle中根据时间获取最新的一条数据
order by kd.createtime 2.SELECT * FROM ( SELECT *,ROWNUM rn FROM t ORDER BY date_col DESC ) ,cg.bert ...
- Servlet 点击计数器
网页点击计数器 很多时候,您可能有兴趣知道网站的某个特定页面上的总点击量.使用 Servlet 来计算这些点击量是非常简单的,因为一个 Servlet 的生命周期是由它运行所在的容器控制的. 以下是实 ...
- mac - MAC电脑安装Mysql服务器和Navicat for mysql客户端
1.下载链接 Navicat for mysql客户端 链接: https://pan.baidu.com/s/1dGbzgbR 密码: i43g Mysql服务器 链接: https://p ...
- PHP中MVC的编程思想浅谈
我相信这样的文章已经被写烂了,但是我今天还是愿意冒着风险把自己的经验与大家分享一下.纯属原创,我也没什么可保留,希望对新手有帮助,有说的什么不对的地方,欢迎大家伙吐槽. 什么是MVC? 简单的说就是将 ...
- spring无法启动常见原因及排查方法
这里总结的问题,通常啥错误也不报,需要自个debug排查,当然每个人遇到的问题可能是不同的,这里仅仅是我个人帮同事解决问题后的一些总结,可能网上的小伙伴可能也遇到,姑且简单记录一下: 1. mybat ...