1. 程式人生 > >Spring裝配之——JAVA程式碼裝配Bean

Spring裝配之——JAVA程式碼裝配Bean

首先建立幾個普通的JAVA物件,用於測試JAVA程式碼裝配bean的功能。

1 package soundsystemJava;
2 
3 //作為介面 定義了CD播放器對一盤CD所能進行的操作
4 public interface CD {
5     void play();
6 }
View Code
 1 package soundsystemJava;
 2 //介面的一個實現
 3 public class CDTest1 implements CD {
 4 
 5     private String title = "十一月的肖邦";
6 private String artist = "JayZhou"; 7 8 public void play() { 9 System.out.println("正在播放:" + title + ",由" + artist + "演唱"); 10 } 11 }
View Code
 1 package soundsystemJava;
 2 //播放CD
 3 public class CDPlayer {
 4     private CD cd;
 5     public CDPlayer(CD cd) {
6 this.cd = cd; 7 } 8 9 public void play() { 10 cd.play(); 11 } 12 }
View Code

準備工作做好之後,我們現在利用JAVA程式碼來裝配bean:

 1 package soundsystemJava;
 2 
 3 import org.springframework.context.annotation.Bean;
 4 import org.springframework.context.annotation.Configuration;
5 6 @Configuration 7 public class CDPlayerConfig { 8 //@Bean 註解會告訴Spring這個方法將會返回一個物件 9 //方法體中可包含最終產生bea例項的邏輯 10 //預設情況下,bean的ID與方法名一樣 11 //@Bean(name="....")指定其他的名字 12 @Bean 13 public CD cdTest1() { 14 return new CDTest1(); 15 } 16 17 //注入方式之一 18 /*@Bean 19 public CDPlayer cdPlayer() { 20 return new CDPlayer(cdTest1()); 21 }*/ 22 23 //注入方式之二 通常是引用其他bean的最佳選擇 24 @Bean 25 public CDPlayer cdPlayer(CD cd) { 26 return new CDPlayer(cd); 27 } 28 }
View Code

進行簡單的JUnit測試:

 1 package soundsystemJava;
 2 
 3 import static org.junit.Assert.*;
 4 
 5 import org.junit.Test;
 6 import org.junit.runner.RunWith;
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.test.context.ContextConfiguration;
 9 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
10 
11 //用於在測試開始時自動建立Spring上下文
12 @RunWith(SpringJUnit4ClassRunner.class)
13 //告訴上下文需要在CDPlayerConfig中載入配置
14 @ContextConfiguration(classes = { CDPlayerConfig.class })
15 public class CDPlayerTest {
16     //自動裝配
17     @Autowired
18     private CDPlayer player;
19     
20     @Autowired
21     private CD cd;
22 
23     @Test
24     public void cdShoildNotBeNull() {
25         assertNotNull(cd);
26     }
27     
28     @Test
29     public void play() {
30         player.play();
31     }
32 }
View Code

測試結果:

正在播放:十一月的肖邦,由JayZhou演唱

通過測試,裝配成功。