Spring in action 02 -- 装配 Bean(JavaConfig)遇到的问题

通过Java代码来装配Bean,遇到一个问题:bean 未能成功的注入,是因为什么呢?

这是示例代码结构:

这里写图片描述

配置类: CDPlayerConfigJava.java

package com.stanxu.javaconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CDPlayerConfigJava {

    @Bean
    public CompactDiscJava sgtPeppersJava(){
        return new SgtPeppersJava();
    }

    @Bean
    public MediaPlayerJava cdPlayerJava(){
        return new CDPlayerJava(sgtPeppersJava());
    }
}

实现类 : CDPlayerJava.java

package com.stanxu.javaconfig;


public class CDPlayerJava implements MediaPlayerJava {

    private CompactDiscJava cd;

    public CDPlayerJava(CompactDiscJava cd) {
        // TODO Auto-generated constructor stub
        this.cd = cd;
    }

    public void play(){
        cd.play();
    }

}

接口类: CompactDiscJava.java

package com.stanxu.javaconfig;

public interface CompactDiscJava {
    void play();
}

接口类: MediaPlayerJava.java

package com.stanxu.javaconfig;

public interface MediaPlayerJava {
    void play();
}

实现类: SgtPeppersJava.java

package com.stanxu.javaconfig;

public class SgtPeppersJava implements CompactDiscJava {

    private String title = "Sgt. Pepper's Lonely Hearts Club Band";
    private String artist = "The Beatles";

    public void play() {
        // TODO Auto-generated method stub
        System.out.print("Playing " + title + " by " + artist);
    }

}

测试类: CDPlayerJavaTest.java

package com.stanxu.javaconfig;

import org.junit.Rule;
import org.junit.Test;

import static org.junit.Assert.*;

import org.junit.contrib.java.lang.system.StandardOutputStreamLog;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfigJava.class)
public class CDPlayerJavaTest {

    @Rule
    public final StandardOutputStreamLog log = new StandardOutputStreamLog();

    private CDPlayerJava player;

    private CompactDiscJava disc;

    @Test
    public void cdShouldNotBeNull(){
        assertNotNull(disc);
    }

    @Test
    public void play(){
        player.play();
        assertEquals("Playing Sgt. Pepper's Lonely Hearts Club Band by The Beatles", log.getLog());
    }
}

测试失败:
CDPlayerJava 与CompactDiscJava 这两个bean 没有被注入进来呢?

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值