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();
}
}

浙公网安备 33010602011771号