【Spring实战】—— 5 设值注入
2019独角兽企业重金招聘Python工程师标准>>>
本篇主要讲解了Spring的最常用的功能——依赖注入。
注入的方式,是使用Getter Setter注入,平时大多的编程也都是使用这种方法。
举个简单的例子,还是表演者。
表演者有自己的属性,年龄或者表演的歌曲等等。还需要一些复杂的属性,比如乐器,每一种乐器会发出不同的声音。
下面看一下表演者Performer
package com.spring.test.action1;public interface Performer {void perform() throws PerformanceException;
}
我们自己定义一个钢琴演奏者,该表演者有年龄和歌曲,还有额外的一种乐器属性。
package com.spring.test.setter;import com.spring.test.action1.PerformanceException;
import com.spring.test.action1.Performer;public class Instrumentalist implements Performer{private String song;private int age;private Instrument instrument;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSong() {return song;}public void setSong(String song) {this.song = song;}public Instrument getInstrument() {return instrument;}public void setInstrument(Instrument instrument) {this.instrument = instrument;}public Instrumentalist(){}public void perform() throws PerformanceException {System.out.println("Instrumentalist age:"+age);System.out.print("Playing "+song+":");instrument.play();}
}
乐器的构造如下,依然使用接口方式:
package com.spring.test.setter;public interface Instrument {public void play();
}
萨克斯实现该乐器接口
package com.spring.test.setter;public class Saxophone implements Instrument {public Saxophone(){}public void play() {System.out.println("TOOT TOOT TOOT");}
}
以上就是基本的类的构造了。
下面看一下Spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="sax" class="com.spring.test.setter.Saxophone"/><bean id="kenny" class="com.spring.test.setter.Instrumentalist"><property name="song" value="Jingle Bells" /><property name="age" value="25" /><property name="instrument" ref="sax" /></bean>
</beans>
在配置文件中,可以发现,设值注入时,使用name来指定注入哪个属性。
name的命名方式依据变量名称。
1 首字母不区分大小写,其他部分与变量名称相同。
2 注入的属性类型,可以是String , int , double , float等,当属性是String或int时,可以根据变量的类型自动转换。
3 注入的是一个bean,则直接使用ref链接到另一个bean即可。
下面是应用上下文的代码:
package com.spring.test.setter;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.spring.test.action1.PerformanceException;public class test {public static void main(String[] args) throws PerformanceException {ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");Instrumentalist performer = (Instrumentalist)ctx.getBean("kenny");performer.perform();}
}
执行结果如下:
Instrumentalist age:25
Playing Jingle Bells:TOOT TOOT TOOT
转载于:https://my.oschina.net/u/204616/blog/545475
【Spring实战】—— 5 设值注入相关推荐
- spring容器的设值注入和构造注入
例如我们现在有一个Computer类: public class Computer {private String cpu;private String hdd;//硬盘private String ...
- Spring受管Bean依赖注入(设值注入)
设值注入是Spring支持的多种依赖注入类型中的一种,也是最为常见的一种.设值(setter)注入指在通过调用无参构造器(或无参静态工厂方法,或工厂Bean的蜚静态工厂方法)实例化受管Bean后调用s ...
- spring7: di依赖注入--设值注入
di:就是依赖注入,给属性赋值. di注入的分类: 1.设值注入,调用java类中的set方法,给属性赋值. 2. 构造注入,调用java类中的有参数构造方法,创建对象的同时,给属性赋值. di的语法 ...
- 构造方法注入和设值注入有什么区别?
请注意以下明显的区别: 1.在设值注入方法支持大部分的依赖注入,如果我们仅需要注入int.string 和long 型的变量,我们不要用设值的方法注入.对于基本类型,如果我们没有注入的话,可以为基本类 ...
- 构造方法注入和设值注入有什么区别
请注意以下明显的区别: (1)设值注入支持大部分依赖注入,如果我们仅需要注入int.string和long型的变量,不要用设值方法注入.对于基本类型,如果没有注入,可以为基本类型设置默认值.构造方法注 ...
- Spring------基于xml的DI (一)设值注入、构造注入
DI的分类 DI:bean实例在调用无参构造器创建了空值对象后,对bean对象的属性进行初始化.初始化是由容器自动完成的,称为注入. 注入分为:设值注入.构造注入. 设值注入 概念:是指,通过sett ...
- 【Spring实战】—— 2 构造注入
2019独角兽企业重金招聘Python工程师标准>>> 本文讲解了构造注入以及spring的基本使用方式,通过一个杂技演员的例子,讲述了依赖注入属性或者对象的使用方法. 如果想要使用 ...
- Spring的核心机制依赖注入,Junit测试与Java基础Getter和Setter两种方法意义——2017.07.26...
今天对Spring的基础理解又加深了一丢丢. 1 首先Spring的基础配置文件中,主要由以下几个配置文件, 1 <beans xmlns:xsi="http://w3.org/200 ...
- Spring的核心机制依赖注入简介
Spring能有效地组织J2EE应用各层的对象.不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的管理下有机地协调.运行.Spring将各层的 ...
最新文章
- 无人车巨头每天都在做相同的事情:不惜血本做高精地图是为何?
- c语言怎么删除字符串中的指定字符_Java中你知道几种从字符串中找指定的字符的数量
- Matlab Simulink如何生成谐波
- 颈部有细纹怎么缓解?
- NYOJ 116 士兵杀敌(二)
- CSS3 box-reflect 属性
- ssl1643-最小乘车费用【dp练习】
- 引用css样式时,一个class引用两个样式的写法( class=ico001 icoCom)。
- SourceTree 教程文档(进阶知识)
- Windows自带利器:Rundll.exe高级应用
- IDEA打开README.md文件时卡死
- 软考 数据库系统工程师
- html好看css标题样式,比较好看的css 自定义样式(标题 h1 h2 h3)
- model.most_similar
- 2021-04-15 三级管npn和pnp的区别
- 数据类型的基本功能(一)
- 编程训练题:多项式求和
- iOS APP开发者福音:苹果启动新App Store订阅服务
- 一个奇怪的买鸡蛋问题
- 品牌升级后,TBase更名为TDSQL和TDSQL-A,CynosDB更名为TDSQL-C
热门文章
- 为什么人工智能被过度炒作?
- MIT长篇论文:我们热捧的AI翻译和自动驾驶,需用技术性价比重估
- 大咖来信|浪潮刘军:AI计算将成为“新基建”核心支撑之一
- SAP HU上面的'Obj.to Which HU Belongs'栏位初探
- IBM Watson失败的4大原因
- IEEE Spectrum调查:AI 的 6 种最坏情况
- Nature:AI 引导人类直觉,帮助发现数学定理
- 20个!中国科协发布2020年重大科学问题和工程技术难题
- 前沿科技 | 中科院科学家研究揭示灵活行动选择的神经机制
- CICC科普栏目|颠覆认知!看完这些图,你的世界观还好吗?