代码
1.CompactDisc.java
package soundsystem;
public interface CompactDisc {
void play();
}
2.SgtPeppers.java
package soundsystem;
public class SgtPeppers implements CompactDisc {
private String title = "怒放吧世界";
private String artist = "汪";
public void play() {
System.out.println("唱片名:" + title + " 音乐家: " + artist);
}
}
3.MediaPlayer.java
package soundsystem;
public interface MediaPlayer {
void play();
}
4.CDPlayer.java
package soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
public class CDPlayer implements MediaPlayer {
private CompactDisc cd;
@Autowired
public CDPlayer(CompactDisc cd) {
this.cd = cd;
}
public void play() {
cd.play();
}
}
5.CDConfig.java
package soundsystem;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 注册一个光盘的bean实例,这里通过spring的xml文件加载该配置文件
*/
@Configuration
public class CDConfig {
@Bean
public CompactDisc compactDisc() {
return new SgtPeppers();
}
}
6.cdplayer-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- spring配置文件中<beans>的子元素<bean>,每个子元素定义一个Bean,并描述了Bean该如何被装配到Spring容器中。 -->
<!-- 加载CDConfig配置文件,获取一个光盘对象实例 -->
<bean class="soundsystem.CDConfig" />
<!-- 直接通过装配类,获取实例bean,和上面一样 -->
<!-- <bean id="compactDisc" class="soundsystem.SgtPeppers" /> -->
<bean id="cdPlayer"
class="soundsystem.CDPlayer"
c:cd-ref="compactDisc" />
</beans>
7.ImportJavaConfigTest.java
package test;
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;
import soundsystem.MediaPlayer;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:cdplayer-config.xml")
public class ImportJavaConfigTest {
@Autowired
private MediaPlayer player;
@Test
public void play() {
player.play();
}
}