Spring基础_通过java代码装配bean<二>

来源:互联网 发布:网络吃鸡啥意思 编辑:程序博客网 时间:2024/06/06 09:00

上文:自动装配bean

1.CompactDisc.java

package one;//光盘接口public interface CompactDisc {void play();}

2.SgtPeppers.java

package one;//汪峰怒放的世界光盘public class SgtPeppers implements CompactDisc {private String title="怒放的世界";private String artist="汪峰";@Overridepublic void play() {System.out.println("playing"+title+"by"+artist);}}
3.MediaPlayer.java

package one;//媒体播放器接口public interface MediaPlayer {void play();}
4.CDPlayer.java

package one;//cd播放机实现媒体播放器接口public class CDPlayer implements MediaPlayer{private CompactDisc cd;public CDPlayer(CompactDisc cd){this.cd=cd;}@Overridepublic void play(){cd.play();}}
5.CDplayerConfig.java

package one;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @ Configuration注解表明这个类是一个配置类,该类应该包 *含在Spring应用上下文中如何创建bean的细节。 */@Configurationpublic class CDplayerConfig {/** * @ Bean注解会告诉Spring这个方法将会返回一个对象,该对象要注册为 * Spring应用上下文中的bean。方法体中包含了最终产生bean实例的逻辑。 * 默认情况下, bean的ID与带有@Bean注解的方法名是一样的。 */@Beanpublic CompactDisc sgtPeppers(){System.out.println("再执行2");return new SgtPeppers();}/*1.默认情况下, Spring中的bean都是单例的,我们并没有必要为第二个CDPlayer bean创建完全相同的 *SgtPeppers实例。所以, Spring会拦截对sgtPeppers()的调用并确保返回的是Spring所创建的bean,也就是 *Spring本身在调用sgtPeppers()时所创建的CompactDisc bean。因此,1和2两个CDPlayer bean会得到相同 *的SgtPeppers实例。*/@Beanpublic MediaPlayer cdPlayer(){System.out.println("先执行1");return new CDPlayer(sgtPeppers());}/*2.再创建一个cdplayer bean * @Beanpublic MediaPlayer anotherCdPlayer(){return new CDPlayer(sgtPeppers());}*///3.比较好理解的方式,同1一样的/*@Beanpublic MediaPlayer cdPlayer(CompactDisc comPactDisc){return new CDPlayer(comPactDisc);}*/}
6.CDplayerTest.java

package one;import static org.junit.Assert.*;import org.junit.Test;import org.junit.runner.RunWith;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 CDplayerTest {@Autowiredprivate CompactDisc cd;@Autowiredprivate MediaPlayer player;@Testpublic void cdshouldBeNull(){assertNotNull(cd);}@Testpublic void play(){player.play();}}






原创粉丝点击