晋南讲堂之Spring—(二) IOC和DI
IOC(Inversion of Control):其思想是反转资源的获取方向,传统的资源查找方式要求组件向容器发起请求查找资源,容器适时的返回资源。应用了IOC之后,容器主动将资源推送给其管理的组件,组件只需要选择一种合适的方式来接受资源。
DI(Dependency Injection)是IOC的另一种表达方式,即组件以预定义好的方式接受来自容器的资源注入。这种表示更易理解。
spring需要在配置文件中配置bean的信息,bean标签中的class为Java bean的全类名,通过反射的方式在IOC中创建Java Bean,所以要求JavaBean中必须有无参数的构造器。bean标签中的id标识容器中的bean,id是唯一的。
在Spring IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化,只有在容器实例化以后,才可以从IOC容器中获取Bean实例并使用。Spring提供了两种类型的IOC容器实现。BeanFactory是IOC容器的基本实现。而ApplicationContext提供了更高级的特性,是BeanFactory的子接口。BeanFactory是Spring框架的基础设施,面向Spring本身。ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext而不是底层的BeanFactory。
ApplicationContext有两个主要的实现类,ClassPathXmlApplicationContext是从类路径下加载配置文件,FileSystemXmlApplictonContext是从文件系统中加载配置文件。ConfigurableApplicationContext继承自ApplicationContext,新增两个主要方法refresh()和close(),让ApplicationContext具有启动、刷新和关闭上下文的能力。ApplicationContext在初始化上下文时就实例化所有单例的Bean。
获取Bean可以使用getBean()方法,除了可以用id获取Bean,还可以用类型来获取,但配置文件中只能有一个bean标签配置该类型。所以推荐使用id的方式。
晋南讲堂之Spring—(二) IOC和DI相关推荐
- Spring 框架 IOC 与 DI 的总结
一:Spring并天下 1:Spring帝国: ①:Spring崛起 什么是Spring:源于Rod Johnson在其著作<Expert one on one J2EE design and ...
- spring之IOC和DI关系
spring之IOC和DI关系 IOC:控制反转:那么什么是控制反转呢? 对于程序开发人员来说,在没有使用spring之前,我们如果需要某一个对象,那么我们会直接去new这个对象,在程序员的世界里还有 ...
- Spring的IOC与DI的个人杂谈
Spring的IOC与DI的个人杂谈 一.前言 初学者初学Spring框架的时候,往往是伴随着SSM三大框架的学习而了解的.但是这样是不好的,我们应该在任务之余去学习一些本框架一些核心的知识点. 本篇 ...
- Spring-学习笔记03【Spring的IOC和DI】
Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...
- 请简述什么是spring的ioc和di_请简述什么是 Spring 的 IoC 和 DI?_学小易找答案
[连线题]把微生物和适用的生物反应器连线 [判断题]混凝土保护层是指从混凝土表面到箍筋公称直径外边缘之间的最小距离. [多选题]下列哪些问题是我们人类目前面临的严峻生态环境问题? [单选题]这是什么器 ...
- Spring(二)——IoC
IoC(Inversion of Control)称之为控制反转,指的是在Spring框架的配置文件中声明对象,由框架负责创建对象,这叫做控制反转.实现方式有两种:DI(Dependency Inje ...
- Java开发为何深入人心 ?我来带你解开 Spring、IoC、DI 的秘密~
目录 一.什么是Spring? 1.1.什么是容器? 1.2.IoC是什么? 1.3.IoC带来了什么好处? 二.什么是DI? 2.1.IoC和DI有什么关系? 一.什么是Spring? 一句概括,S ...
- 互相引用 spring_巧夺天工,这样理解Spring的IOC、DI下来,真的很清晰了
前言 你可能会有如下问题: 想看Spring源码,但是不知道应当如何入手去看,对整个Bean的流程没有概念,碰到相关问题也没有头绪如何下手 看过几遍源码,没办法彻底理解,没什么感觉,没过一阵子又忘了本 ...
- 关于Spring的IOC和DI
原始调用模型 Spring的演化过程 Spring的调用过程 ======================================= IoC[理解][应用][重点] 1.IoC(Inversi ...
最新文章
- PL/SQL集合类型的整理学习
- php禁止组合热键,cad组合快捷键命令有哪些
- 2012 Hadoop summit
- 京东AI NLP高阶实训学习笔记
- Python基础day07 作业解析【文件操作(文件读写、文件夹操作)】
- RDD, DataFrame or Dataset
- ABAP--关于ABAP流程处理的一些命令的说明(stop,exit,return,check,reject)
- BZOJ-1034 泡泡堂
- [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
- Python接口自动化之数据驱动
- java 多线程的一种实现方式
- 【leetcode 简单】第四十一题 Excel表列序号
- arduino analogread_Arduino编程语言教程,Arduino和单片机的区别
- 用递归和非递归实现斐波那契数列
- 使用验证控件出现错误:要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。...
- mysql集群session_集群session解决方案
- python建模预测_技术分享 - python数据分析(6)——挖掘建模(1)分类与预测
- ListView嵌套GridView使用解析
- 怎么查看ubuntu虚拟机ip地址?
- 公众号管理系统 html,Java SpringBoot+Mybatis Layui+JQuery+html微信公众号后台管理系统...
热门文章
- 三国志战略版:Daniel_平民福音-“黑科技阵法”三势阵
- 汇编指令mrs_(转)ARM汇编学习笔记——MRS和MSR指令
- pytorch--从零实现一个BERT模型
- 安全多方计算 # 个人笔记
- 百度地图JavaScript API GL1.0给折线添加箭头
- 智能家居核心 —— wifi模块
- asp.net2.0学习指导 菜鸟到中级程序员的飞跃
- 数据时代的大数据技术,主要包括哪些内容?
- selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析
- 前端模板——家乡风景的介绍