1、文件包括:2个接口,2个对应的实现类,1个配置类,1个测试bean是否装配成功的类。
2、代码依次如下:
package soundsystem;
/**
* Created by cxh on 17/7/15.
* 音响系统:Compact disc
*/
public interface CompactDisc {
void play();
CompactDisc sgtPeppers();
}
package soundsystem;
/**
* Created by cxh on 17/7/16.
*/
public interface MediaPlayer {
void play();
CompactDisc getMusicResource();
}
package soundsystem;
/**
* Created by cxh on 17/7/15.
*/
//@Component
public class SgtPeppers implements CompactDisc {
private String title="Sgt. Pepper`s Lonely Hearts Club Band";
private String artist="The Beatles";
public void play(){
System.out.println("Playing "+title+" by "+artist);
}
public CompactDisc sgtPeppers(){
return new SgtPeppers();
}
}
package soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Created by cxh on 17/7/16.
*/
//@Component
public class CDPlayer implements MediaPlayer {
// 定义一个音乐资源,这里通过@Autowired来声明需要注入CompactDisc的依赖
@Autowired
private CompactDisc cd;
public void play(){
cd.play();
}
public CompactDisc getMusicResource(){
return cd;
}
}
package soundsystem;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Created by cxh on 17/7/15.
*
*/
//@ComponentScan
@Configuration
public class CDPlayerConfig {
@Bean
public CompactDisc compactDisc(){
return new SgtPeppers();
}
@Bean
public MediaPlayer cdPlayer(CompactDisc cd){
return new CDPlayer();
}
}
package soundsystem;
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.StandardOutputStreamLog;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**
* Created by cxh on 17/7/15.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CDPlayerConfig.class)
public class CDPlayerTest {
@Rule
public final StandardOutputStreamLog log=new StandardOutputStreamLog();
@Autowired
private MediaPlayer player;
@Autowired
private CompactDisc cd;
@Test
public void cdShouldNotBeNull(){
assertNotNull(cd);
}
@Test
public void play(){
player.play();
assertEquals("Playing Sgt. Pepper`s Lonely Hearts Club Band"+
" by The Beatles\n",
log.getLog());
}
}
3、运行结果如下: