2.3使用java代码进行装配bean

@Configuration:表明这是个配置类,该类应该包含在spring应用上下文中。如果@Bean修饰的方法被                                      @Configuration修饰,那么方法是单例的。
@Bean:注解会告诉spring这个返回返回一个对象。该对象要注册为spring应用上下文中的bean,方法体中
包含了最终产生bean实例。默认情况下,bean的ID与带有@Bean注解的方法名是一样的。可以通过name属性重命名。

public interface MediaPlayer {
}
public class CDplayer implements MediaPlayer{

private CompactDisc compactDisc;

public CDplayer(CompactDisc compactDisc) {
this.compactDisc = compactDisc;
}

public void play(){
compactDisc.play();
}
}
public interface CompactDisc {

void play();
}
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);
}
}
@Configuration
@ComponentScan
public class CDPlayConfig {

@Bean
public CompactDisc sgtPeppers(){
return new SgtPeppers();
}

// @Bean
// public CDplayer cdplayer(){
// System.out.println(sgtPeppers());
// return new CDplayer(sgtPeppers());
// }

@Bean
public CDplayer cdplayer(CompactDisc compactDisc){
System.out.println(compactDisc);
return new CDplayer(compactDisc);
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayConfig.class)
public class CDPlayTest {

@Autowired
private CompactDisc cd;

@Autowired
private CDplayer cdplayer;

@Test
public void cdShouldNotBeNull(){
cd.play();
}


@Test
public void file(){
File file = new File("");
}

@Test
public void testJavaConfig(){
System.out.println(cd);        //在CDPlayConfig中配置的@Bean是单例的,所以这个cd与config中
                                        CompactDisc是一样的

System.out.println(cdplayer);
cdplayer.play();
}

}





posted @ 2021-01-14 19:35  _Shing  阅读(160)  评论(0)    收藏  举报