版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MASORL/article/details/82629043
具体步骤
(1)普通的接口
(2)实现接口的类,该类需要装配到spring bean中
(3)xml配置文件
示例代码
接口1:
package com.spring.action.xmlconfig;
/**
* 一个光盘接口
*/
public interface CompactDisc {
void sing();//光盘的sing功能
}
接口1实现
package com.spring.action.xmlconfig;
/**
* CompactDisc实现类
*/
public class SgtPeppers implements CompactDisc {
public void sing() {
System.out.println("sgtPeppers的sing方法");
}
}
接口2
package com.spring.action.xmlconfig;
/**
* 媒体播放器
*/
public interface MediaPlayer {
void play(); //一个播放方法
}
接口2实现
package com.spring.action.xmlconfig;
import org.springframework.beans.factory.annotation.Autowired;
public class CDPlayer implements MediaPlayer {
private CompactDisc compactDisc;
public CDPlayer(CompactDisc compactDisc){
this.compactDisc = compactDisc;
}
public void play() {
System.out.println("播放器开始播放");
compactDisc.sing();
}
}
XML配置文件
<constructor-arg>:借助构造器来注入bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="sgtPeppers" class="com.spring.action.xmlconfig.SgtPeppers"/>
<bean id="cdPlayer" class="com.spring.action.xmlconfig.CDPlayer">
<constructor-arg name="compactDisc" ref="sgtPeppers"/>
</bean>
</beans>
测试类
package com.spring.action;
import com.spring.action.xmlconfig.CompactDisc;
import com.spring.action.xmlconfig.MediaPlayer;
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;
//使用SpringJUnit4ClassRunner,可以在测试开始的时候自动创建Spring的应用上下文
@RunWith(SpringJUnit4ClassRunner.class)
//导入配置
@ContextConfiguration(locations = "classpath:site.xml")
public class XMLconfigTest {
@Autowired
private CompactDisc compactDisc;
@Autowired
private MediaPlayer mediaPlayer;
@Test
public void play() {
mediaPlayer.play();
}
}
运行结果
9月 11, 2018 5:15:28 下午 org.springframework.context.support.GenericApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.GenericApplicationContext@1623b78d: startup date [Tue Sep 11 17:15:28 CST 2018]; root of context hierarchy
播放器开始播放
sgtPeppers的sing方法
遇到的问题:
因为我使用的是IDEA 开发环境,所以测试类无法访问src目录下的xml文件。导致了FileNotFindExcetion错误。
解决方法:
方法一:把xml放入resources 文件夹中,或者把配置的文件夹设置为resources.
方法二:因为我使用了maven,所以可以在maven中加入以下代码,也可以解决问题。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>