package com.spring.javabeans.cd;
import org.springframework.beans.factory.annotation.Autowired;
public class CDPlayer implements MediaPlayer{
private CompactDisc cd;
@Autowired//表明Spring初始化後盡可能地去滿足bean的依賴,在這裡它注入了一個CompactDisc的對象
public CDPlayer(CompactDisc cd){
this.cd=cd;
}
@Override
public void player() {
System.out.println("使用CD播放!");
}
}
@Autowired只表明在調用構造器時Spring為其注入一個需要的bean
package com.spring.javabeans.cd;
public class CompactDisc_guangliang implements CompactDisc{
private String title="童話";
private String artist="光良";
@Override
public void play(){
System.out.println("播放:"+title+"來自藝術家:"+artist);
}
}
去除了@Component之後,CompactDisc變成一個普通類,在這裡,Spring不對其負責。
package com.spring.javabeans.cd;
import org.springframework.context.annotation.Bean;
//通過java代碼定義spring的裝配機制
public class CDPlayerConfig {
@Bean
public CompactDisc randomBeatlesCD(){
int key=(int)Math.floor(Math.random()*4);
if(key==0){
return new CompactDisc_zhoujielun();
}
else if(key==1){
return new CompactDisc_xusong();
}
else if(key==2){
return new CompactDisc_guangliang();
}
else{
return new CompactDisc_wangfei();
}
}
@Bean
public CDPlayer cdplayer(CompactDisc cd){
return new CDPlayer(cd);
}
}
@bean表明了Spring需要在這裡創建一個bean。
package com.spring.javabeans.cd;
import static org.junit.Assert.*;
import org.junit.runner.RunWith;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDTest {
@Autowired
private MediaPlayer player;
@Autowired
private CompactDisc cd;
@Test
public void test1() {
assertNotNull(player);
assertNotNull(cd);
}
@Test
public void test2(){
player.player();
cd.play();
}
}
@Autowired表明了依賴注入關系。
熱愛分享拒絕拿來主義,博客精神永存——cvrigo
2016-11-09 13:40:56