Spring装配之——JAVA代码装配Bean
首先创建几个普通的JAVA对象,用于测试JAVA代码装配bean的功能。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package soundsystemJava; 2 3 //作为接口 定义了CD播放器对一盘CD所能进行的操作 4 public interface CD { 5 void play(); 6 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
准备工作做好之后,我们现在利用JAVA代码来装配bean:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
进行简单的JUnit测试:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
测试结果:
正在播放:十一月的肖邦,由JayZhou演唱
通过测试,装配成功。