Spring的核心机制依赖注入简介
◆构造注入。
//定义Person接口
public interface Person { //Person接口里定义一个使用斧子的方法 public void useAxe(); } |
//定义Axe接口
public interface Axe { //Axe接口里有个砍的方法 public void chop(); } |
//Chinese实现Person接口
public class Chinese implements Person { //面向Axe接口编程,而不是具体的实现类 private Axe axe; //默认的构造器 public Chinese() {} //设值注入所需的setter方法 public void setAxe(Axe axe) { this.axe = axe; } //实现Person接口的useAxe方法 public void useAxe() { System.out.println(axe.chop()); } } |
//Axe的第一个实现类 StoneAxe
public class StoneAxe implements Axe { //默认构造器 public StoneAxe() {} //实现Axe接口的chop方法 public String chop() { return "石斧砍柴好慢"; } } |
<!-- 下面是标准的XML文件头 -->
<?xml version="1.0" encoding="gb2312"?> <!-- 下面一行定义Spring的XML配置文件的dtd --> "[url]http://www.springframework.org/dtd/spring-beans.dtd[/url]"> <!-- 以上三行对所有的Spring配置文件都是相同的 --> <!-- Spring配置文件的根元素 --> <BEANS> <!—定义第一bean,该bean的id是chinese, class指定该bean实例的实现类 --> <BEAN class=lee.Chinese id=chinese> <!-- property元素用来指定需要容器注入的属性,axe属性需要容器注入此处是设值注入,因此 Chinese类必须拥有setAxe方法 --> <property name="axe"> <!-- 此处将另一个bean的引用注入给chinese bean --> <REF local="”stoneAxe”/"> </property> </BEAN> <!-- 定义stoneAxe bean --> <BEAN class=lee.StoneAxe id=stoneAxe /> </BEANS> |
public class BeanTest
{ //主方法,程序的入口 public static void main(String[] args)throws Exception { //因为是独立的应用程序,显式地实例化Spring的上下文。 ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); //通过Person bean的id来获取bean实例,面向接口编程,因此 //此处强制类型转换为接口类型 Person p = (Person)ctx.getBean("chinese"); //直接执行Person的userAxe()方法。 p.useAxe(); } } |
<?xml version="1.0"?>
<!-- 定义编译该项目的基本信息--> <PROJECT name="spring" default="." basedir="."> <!-- 定义编译和运行该项目时所需的库文件 --> <PATH id=classpath> <!-- 该路径下存放spring.jar和其他第三方类库 --> <FILESET dir=..\..\lib> <INCLUDE name="*.jar" /> </FILESET> <!-- 同时还需要引用已经编译过的class文件--> <PATHELEMENT path="." /> </PATH> <!-- 编译全部的java文件--> <TARGET de.ion="Compile all source code" name="compile"> <!-- 指定编译后的class文件的存放位置 --> <JAVAC debug="true" destdir="."> deprecation="false" optimize="false" failοnerrοr="true"> <!-- 指定需要编译的源文件的存放位置 --> <SRC path="." /> <!-- 指定编译这些java文件需要的类库位置--> <CLASSPATH refid="classpath" /> </JAVAC> </TARGET> <!-- 运行特定的主程序 --> <TARGET de.ion="run the main class" name="run" depends="compile"> <!-- 指定运行的主程序:lee.BeanTest。--> <JAVA failοnerrοr="true" fork="yes" classname="lee.BeanTest"> <!-- 指定运行这些java文件需要的类库位置--> <CLASSPATH refid="classpath" /> </JAVA> </TARGET> </PROJECT> |
//Axe的另一个实现类 SteelAxe
public class SteelAxe implements Axe { //默认构造器 public SteelAxe() {} //实现Axe接口的chop方法 public String chop() { return "钢斧砍柴真快"; } } |
<!-- 定义一个steelAxe bean-->
<BEAN class=lee.SteelAxe id=steelAxe /> |
<REF local="”stoneAxe”/">
|
<REF local="”steelAxe”/">
|
//Chinese实现Person接口
public class Chinese implements Person { //面向Axe接口编程,而不是具体的实现类 private Axe axe; //默认的构造器 public Chinese() {} //构造注入所需的带参数的构造器 public Chinse(Axe axe) { this.axe = axe; } //实现Person接口的useAxe方法 public void useAxe() { System.out.println(axe.chop()); } } |
<!-- 下面是标准的XML文件头 -->
<xml version="1.0" encoding="gb2312"?> <!-- 下面一行定义Spring的XML配置文件的dtd --> "[url]http://www.springframework.org/dtd/spring-beans.dtd[/url]"> <!-- 以上三行对所有的Spring配置文件都是相同的 --> <!-- Spring配置文件的根元素 --> <BEANS> <!—定义第一个bean,该bean的id是chinese, class指定该bean实例的实现类 --> <BEAN class=lee.Chinese id=chinese> </BEAN> <!-- 定义stoneAxe bean --> <BEAN class=lee.SteelAxe id=steelAxe /> </BEANS> |
转载于:https://blog.51cto.com/zhoujiyu/133660
Spring的核心机制依赖注入简介相关推荐
- Spring的核心机制依赖注入,Junit测试与Java基础Getter和Setter两种方法意义——2017.07.26...
今天对Spring的基础理解又加深了一丢丢. 1 首先Spring的基础配置文件中,主要由以下几个配置文件, 1 <beans xmlns:xsi="http://w3.org/200 ...
- Spring 控制反转和依赖注入简介
文章目录 1.介绍 2.什么是控制反转? 3.什么是依赖注入? 4.Spring IoC 容器 5.基于构造函数的依赖注入 6.基于Setter的依赖注入 7.基于字段的依赖注入 8.自动装配依赖 9 ...
- spring依赖注入简介以及依赖注入的两种方式
1.spring依赖注入简介 依赖注入:Set注入1.依赖:bean对象创建依赖于容器!2.注入:bean对象中的所有属性,由容器来注入! 2.依赖注入的两种方式 实体类: package com ...
- Spring 的控制反转/依赖注入
第一章 Spring 的控制反转/依赖注入 回顾 增删改查. 课前测: 本章内容 spring:春天 IOC:将创建对象的权力交给 spring 核心容器去控制.工厂模式 BeanFactory: 懒 ...
- 一步一步手绘Spring DI运行时序图(Spring 自动装配之依赖注入)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 零配置 之 Spring 注解实现Bean依赖注入
转载自 [第十二章]零配置 之 12.2 注解实现Bean依赖注入 --跟我学spring3 12.2 注解实现Bean依赖注入 12.2.1 概述 注解实现Bean配置主要用来进行如依赖注入. ...
- Spring IOC容器的依赖注入流程(收集和注册、分析和组装)
Spring IOC容器的依赖注入流程 Spring IOC容器的依赖注入工作可以分为两个阶段: 阶段一:收集和注册 第一个阶段可以认为是构建和收集bean定义的阶段,在这个阶段中,我们可以通过XML ...
- 回客科技 面试的 实现ioc 容器用到的技术,简述BeanFactory的实现原理,大搜车面试的 spring 怎么实现的依赖注入(DI)...
前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱.所以需要继续加强. 这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说 ...
- 关于mysql注入说法正确的是_1. 在 Spring中,下列关于 依赖注入 的 说法 , 正确的是( ) 。_学小易找答案...
[简答题]1基本流程练习 2时间轴嵌套 3简单应用 [简答题]请解释什么是MVC? [多选题]在 Hibernate 中,下 列 说法正确的有 [多选题]1. 关于 Spring,下列说法不正确的是( ...
最新文章
- AprilTags二维码的检测与应用
- 编程马拉松大赛试题及代码(C++实现)
- Spring的@ImportResource注解
- 最短路径(Dijkstra、Bellman-Ford和SPFA算法)
- struts文件异常Included file cannot be found
- PowerMock介绍
- 10分钟学会python函数式编程,赶紧收藏!!
- 深度学习之PyTorch物体检测实战——新书赠送活动
- 在WinForm中屏蔽中文输入法
- 51Nod-1008 N的阶乘 mod P【模除】
- Arcgis土地利用转移矩阵制作
- Windows API——SHFileOperation——文件操作
- 统计 假设检验 显著性差异
- 计算机装系统找不到硬盘分区,U盘重装系统找不到硬盘分区怎么办|安装系统找不到硬盘分区...
- 辅音字母组合功能音中的浊化现象
- c语言创意程序题目,成都scratch趣味编程100例
- PacketTracer Physical view wireless single problem
- 浮点型数据规范以及规格化与非规格化数据(更新:原文疑问已解)
- 解决Ubuntu18.04不能用Xshell使用root用户登录
- 关于职业规划,尤其值得我们程序员学习、思考
热门文章
- mysql 并发_mysql 的读写锁与并发控制
- php表示昨天_php获取今天、昨天、明天的日期
- java 集合 总结 表_java 列表与集合总结
- create symbolic array
- 超有意思的代码注释_程序员搞笑的代码注释:谁的代码注释我都不服,就服你的...
- 转行算法,90%的人还没开始就错在了这1步
- 大数据工程师技能图谱
- 环信php创建群组,【PHP】接入环信创建群组和IM用户
- 计算机基础课作业答案,计算机应用基础课程作业及答案.doc
- Coding the Matrix Week 1 The Vector Space作业