spring in action 学习笔记(二)通过构造器注入对象的引用

上一节中,场景了搞了一个选秀大赛,每个参赛的人都有表演的能力(实现performer接口,实现performe方法),虚拟了一个杂技师,这个杂技师可以抛豆袋子,默认是3个,我们在构造器中给这个杂技师注入了15个豆袋子的属性,即通过构造器注入基本类型的属性,这节我们学习如何通过构造器注入对象的引用。

再次虚拟了一个杂技师,这个杂技师比上节中叫duke的杂技师能力更出众,会朗诵诗歌。

我们先定义一个朗诵诗歌的接口

/**
 * Created by csucoderlee on 2017 10 05 22:39.
 * 朗诵诗歌的接口
 */
public interface Poem {
    void recite();
}

再定义一个具体的诗歌

/**
 * Created by csucoderlee on 2017 10 05 22:41.
 *
 * 定义了一首普通的诗歌
 */
public class Sonnet29 implements Poem {
    private static final String[] LINES = {"1", "2", "3"};

    public Sonnet29() {
    }

    public void recite() {
        for (int i = 0; i < LINES.length; i++){
            System.out.println(LINES[i]);
        }
    }
}


这次的杂技师叫poeticJuggler

/**
 * Created by csucoderlee on 2017 10 05 22:37.
 */
public class PoeticJuggler extends Juggler{
    private Poem poem;

    public PoeticJuggler(){}

    public PoeticJuggler(int beanBags, Poem poem) {
        super(beanBags);
        this.poem = poem;
    }

    @Override
    public void perform() {
        super.perform();
        System.out.println("While reciting ...");
        poem.recite();
    }

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/spring-beans.xml");
        Performer performer = (Performer) ctx.getBean("poeticJuggler");
        performer.perform();
    }
}

poeticJuggler继承Juggler,他可以抛袋子,同时也可以朗诵诗歌,我们在配置文件中,加载一个诗歌的bean,并且通过构造器将该诗歌的对象引用注入给poeticJuggler。

<!-- 声明了一首诗 -->
    <bean id="sonnet29" class="com.springinaction.ch02.Sonnet29"/>

    <bean id="poeticJuggler" class="com.springinaction.ch02.PoeticJuggler">
        <constructor-arg value="6"/>
        <constructor-arg ref="sonnet29"/>
    </bean>


这个时候,运行poeticJuggler的主方法,就会打印如下信息

JUGGLING 6 BEANBAGS
While reciting ...
1
2
3







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值