Spring 基于构造函数的依赖注入
当容器调用带有一组参数的类构造函数时,基于构造函数的依赖注入就完成了,其中每个参数代表一个对其他类的依赖。
看个例子:
TextEditor的源代码:
public class TextEditor {private SpellChecker spellChecker;public TextEditor(SpellChecker spellChecker) {System.out.println("Inside TextEditor constructor." );this.spellChecker = spellChecker;}public void spellCheck() {spellChecker.checkSpelling();}}
TextEditor的构造函数里有一个参数,代表对SpellChecker的依赖。
SpellChecker的源代码:
public class SpellChecker {public SpellChecker(){System.out.println("Inside SpellChecker constructor." );}public void checkSpelling() {System.out.println("Inside checkSpelling." );} }
MainApp.java的内容:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");TextEditor te = (TextEditor) context.getBean("textEditor");te.spellCheck();}
}
Beans.xml的内容:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><!-- Definition for textEditor bean --><bean id="textEditor" class="com.sap.TextEditor"><constructor-arg ref="spellChecker"/></bean><!-- Definition for spellChecker bean --><bean id="spellChecker" class="com.sap.SpellChecker"></bean></beans>
通过构造函数注入依赖的核心是这个标签:
单步调试观察:创建Spring IOC容器:
创建TextEditor bean实例:
检测到构造函数里有一个参数依赖:
依赖于另一个bean:spellChecker
因此SpellChecker实例也被创建出来了:
输出:
Inside SpellChecker constructor.
Inside TextEditor constructor.
Inside checkSpelling.
如果你想要向一个对象传递一个引用,你需要使用 标签的 ref 属性,如果你想要直接传递值,那么你应该使用如上所示的 value 属性。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
Spring 基于构造函数的依赖注入相关推荐
- Spring 控制反转和依赖注入简介
文章目录 1.介绍 2.什么是控制反转? 3.什么是依赖注入? 4.Spring IoC 容器 5.基于构造函数的依赖注入 6.基于Setter的依赖注入 7.基于字段的依赖注入 8.自动装配依赖 9 ...
- Spring Bean 装配和依赖注入
Spring IOC 容器的依赖注入工作可以分为两个阶段.第一个阶段可以认为是构建和收集 Bean 定义的阶段,在这个阶段中,我们可以通过 xml 或者 Java 代码的方式定义一些 Bean,然后通 ...
- Spring 的控制反转/依赖注入
第一章 Spring 的控制反转/依赖注入 回顾 增删改查. 课前测: 本章内容 spring:春天 IOC:将创建对象的权力交给 spring 核心容器去控制.工厂模式 BeanFactory: 懒 ...
- 零配置 之 Spring 注解实现Bean依赖注入
转载自 [第十二章]零配置 之 12.2 注解实现Bean依赖注入 --跟我学spring3 12.2 注解实现Bean依赖注入 12.2.1 概述 注解实现Bean配置主要用来进行如依赖注入. ...
- Spring IOC容器的依赖注入流程(收集和注册、分析和组装)
Spring IOC容器的依赖注入流程 Spring IOC容器的依赖注入工作可以分为两个阶段: 阶段一:收集和注册 第一个阶段可以认为是构建和收集bean定义的阶段,在这个阶段中,我们可以通过XML ...
- 一步一步手绘Spring DI运行时序图(Spring 自动装配之依赖注入)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- Spring的核心机制依赖注入简介
Spring能有效地组织J2EE应用各层的对象.不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的管理下有机地协调.运行.Spring将各层的 ...
- Spring(二)--------Spring配置、DI依赖注入、Bean自动装配
Spring(二)--------Spring配置.DI依赖注入.Bean自动装配 5.Spring配置 5.1 别名 设置别名:第一种方式alias <!--其中name为ID的对应值--&g ...
- 回客科技 面试的 实现ioc 容器用到的技术,简述BeanFactory的实现原理,大搜车面试的 spring 怎么实现的依赖注入(DI)...
前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱.所以需要继续加强. 这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说 ...
最新文章
- linux 查看服务器序列号(S/N)
- java addlistener_Java怎样监听文本//比如下面 y.addInputMethodListener((InputMethodListener) this);...
- 使用dshow抓取摄像头数据时,回调函数时间为0的问题
- 怎么用计算机计算年月份,如何使用Excel计算两个日期之间的月数?
- Eclipse添加JDK源码
- vue+node全栈移动商城【6】-node接口配置文件
- “智慧感控”理念革新医疗管理
- 一张图看懂字节跳动8年创业史,太励志了吧
- netty中的websocket
- mac怎么查node版本_Node.js 微服务实践:基于容器的一站式命令行工具链
- 管理docker容器
- Delphi的Hint(2)
- 谈谈JProfiler的实现原理
- 智能控制导论 # 模糊控制 2 模糊控制器的原理与设计方法
- vue移动端UI组件
- 批处理QQ音乐生成的文件名
- Python学习笔记-2017.5.4thon学习笔记-2017.5.14
- python --opencv图像处理轮廓(寻找轮廓、绘制轮廓)详解
- 基于因子分析法分析新冠肺炎疫情对房地产业上市公司财务的影响
- 【FFMPEG】I,P,B帧和PTS,DTS时间戳的关系
热门文章
- SQL2005备份集中的数据库备份与现有的数据库不同,错误号码:3154,解决方法...
- go语言编程小游戏--贪吃蛇
- [ 转载 ] [经典排序算法][集锦]
- 学习 shell —— 编写基本脚本
- 局域共享解决——用户账户限制,可能的原因包括不允许空密码,登录时间限制...
- 反射,hashlib模块,正则匹配,冒泡,选择,插入排序
- java基础之java中的基本数据类型
- linux 备份svn
- UVa 489 - Hangman Judge
- vue+xterm.js 实现Linux command界面