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演唱

通过测试,装配成功。

猜你喜欢

转载自www.cnblogs.com/ustc-anmin/p/10138781.html