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