spring in action 学习笔记(六)通过setter注入bean属性

来源:互联网 发布:Json 大括号 编辑:程序博客网 时间:2024/05/20 22:26

上几节中,我们主要创建了两个杂技师,来参加选秀大赛,并且通过构造器来注入相关的属性,如基本类型属性beanBags豆袋子,引用类型Poem。

这一节,演示spring的另一种依赖注入的方法,也是比较常用的方法。

首先,我们来创建一个很有天赋的音乐演奏家

/** * Created by csucoderlee on 2017 10 08 16:12. * 一个乐器演奏家 */public class Instrumentalist implements Performer{    private String song;    private Instrument instrument;    public Instrumentalist() {    }    public void perform() {        System.out.println(" 表演唱歌 歌曲为"  + song + ":" );        instrument.play();    }    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;    }}

这个演奏家,有两个属性,一个是基本类型的歌曲song属性,一个是引用类型的属性乐器instrument。

/** * Created by csucoderlee on 2017 10 08 16:14. * 定义乐器接口 */public interface Instrument {    public void play();}


由于这个类有一个默认的构造器方法,所以在spring采用下面的xml配置一个<bean>

    <bean id="kenny" class="com.springinaction.ch02.Instrumentalist"/>

虽然spring把kenny实例化一个Instrumentlist类型的对象没有任何的问题,但是kenny没有歌曲(song) 和乐器(instrument),是无法进行演奏表演的。

所以,我们要学习如何通过setter方法,给这个演奏家注入相关的值。

首先,我们先创建一个具体的乐器萨克斯

/** * Created by lixiang on 2017 10 08 16:27. */public class Saxophone implements Instrument{    public Saxophone() {    }    public void play() {        System.out.println("TOOT TOOT TOOT");    }}

然后,在配置文件中,进行配置注入演奏家的这两个私有属性

<bean id="saxophone" class="com.springinaction.ch02.Saxophone"/><bean id="kenny" class="com.springinaction.ch02.Instrumentalist">    <property name="song" value="我的秘密"/>    <property name="instrument" ref="saxophone"/></bean>

上面的配置,就为kenny这个演奏家注入了歌曲和乐器的属性,和构造器注入没啥太大的区别,只不过是将constuctor-arg 换成了property



阅读全文
0 0
原创粉丝点击