通过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 没有被注入进来呢?