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 设值注入相关推荐

  1. spring容器的设值注入和构造注入

    例如我们现在有一个Computer类: public class Computer {private String cpu;private String hdd;//硬盘private String ...

  2. Spring受管Bean依赖注入(设值注入)

    设值注入是Spring支持的多种依赖注入类型中的一种,也是最为常见的一种.设值(setter)注入指在通过调用无参构造器(或无参静态工厂方法,或工厂Bean的蜚静态工厂方法)实例化受管Bean后调用s ...

  3. spring7: di依赖注入--设值注入

    di:就是依赖注入,给属性赋值. di注入的分类: 1.设值注入,调用java类中的set方法,给属性赋值. 2. 构造注入,调用java类中的有参数构造方法,创建对象的同时,给属性赋值. di的语法 ...

  4. 构造方法注入和设值注入有什么区别?

    请注意以下明显的区别: 1.在设值注入方法支持大部分的依赖注入,如果我们仅需要注入int.string 和long 型的变量,我们不要用设值的方法注入.对于基本类型,如果我们没有注入的话,可以为基本类 ...

  5. 构造方法注入和设值注入有什么区别

    请注意以下明显的区别: (1)设值注入支持大部分依赖注入,如果我们仅需要注入int.string和long型的变量,不要用设值方法注入.对于基本类型,如果没有注入,可以为基本类型设置默认值.构造方法注 ...

  6. Spring------基于xml的DI (一)设值注入、构造注入

    DI的分类 DI:bean实例在调用无参构造器创建了空值对象后,对bean对象的属性进行初始化.初始化是由容器自动完成的,称为注入. 注入分为:设值注入.构造注入. 设值注入 概念:是指,通过sett ...

  7. 【Spring实战】—— 2 构造注入

    2019独角兽企业重金招聘Python工程师标准>>> 本文讲解了构造注入以及spring的基本使用方式,通过一个杂技演员的例子,讲述了依赖注入属性或者对象的使用方法. 如果想要使用 ...

  8. Spring的核心机制依赖注入,Junit测试与Java基础Getter和Setter两种方法意义——2017.07.26...

    今天对Spring的基础理解又加深了一丢丢. 1 首先Spring的基础配置文件中,主要由以下几个配置文件, 1 <beans xmlns:xsi="http://w3.org/200 ...

  9. Spring的核心机制依赖注入简介

    Spring能有效地组织J2EE应用各层的对象.不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的管理下有机地协调.运行.Spring将各层的 ...

最新文章

  1. 无人车巨头每天都在做相同的事情:不惜血本做高精地图是为何?
  2. c语言怎么删除字符串中的指定字符_Java中你知道几种从字符串中找指定的字符的数量
  3. Matlab Simulink如何生成谐波
  4. 颈部有细纹怎么缓解?
  5. NYOJ 116 士兵杀敌(二)
  6. CSS3 box-reflect 属性
  7. ssl1643-最小乘车费用【dp练习】
  8. 引用css样式时,一个class引用两个样式的写法( class=ico001 icoCom)。
  9. SourceTree 教程文档(进阶知识)
  10. Windows自带利器:Rundll.exe高级应用
  11. IDEA打开README.md文件时卡死
  12. 软考 数据库系统工程师
  13. html好看css标题样式,比较好看的css 自定义样式(标题 h1 h2 h3)
  14. model.most_similar
  15. 2021-04-15 三级管npn和pnp的区别
  16. 数据类型的基本功能(一)
  17. 编程训练题:多项式求和
  18. iOS APP开发者福音:苹果启动新App Store订阅服务
  19. 一个奇怪的买鸡蛋问题
  20. 品牌升级后,TBase更名为TDSQL和TDSQL-A,CynosDB更名为TDSQL-C

热门文章

  1. 为什么人工智能被过度炒作?
  2. MIT长篇论文:我们热捧的AI翻译和自动驾驶,需用技术性价比重估
  3. 大咖来信|浪潮刘军:AI计算将成为“新基建”核心支撑之一
  4. SAP HU上面的'Obj.to Which HU Belongs'栏位初探
  5. IBM Watson失败的4大原因
  6. IEEE Spectrum调查:AI 的 6 种最坏情况
  7. Nature:AI 引导人类直觉,帮助发现数学定理
  8. 20个!中国科协发布2020年重大科学问题和工程技术难题
  9. 前沿科技 | 中科院科学家研究揭示灵活行动选择的神经机制
  10. CICC科普栏目|颠覆认知!看完这些图,你的世界观还好吗?