package zhl.soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author zhl
* @version 创建时间:2019年9月1日 下午6:45:44
* @describe CD播放器
*/
@Component
public class CDPlayer {
private CompactDisc cd;
@Autowired
public CDPlayer(CompactDisc cd) {
this.cd = cd;
}
public void Play() {
this.cd.play();
}
}
package zhl.soundsystem;
/**
* @author zhl
* @version 创建时间:2019年9月1日 下午6:45:10
* @describe CD类
*/
public interface CompactDisc {
void play();
}
package zhl.soundsystem;
import org.springframework.stereotype.Component;
/**
* @author zhl
* @version 创建时间:2019年9月1日 下午6:50:34
* @describe 类说明(@Component 显示的设置bean)
*/
@Component
public class SgtPeppers implements CompactDisc {
public void play() {
// TODO Auto-generated method stub
System.out.println("Play SgtPepper");
}
}
package zhl.soundsystem;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author zhl
* @version 创建时间:2019年9月1日 下午10:17:10
* @describe 创建测试类,初始化Spring上下文,加载xml
*/
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext tx = new ClassPathXmlApplicationContext("applicationcontext.xml");
CompactDisc cd = (CompactDisc)tx.getBean("sgtPeppers");
if(cd == null) {
System.out.println("cd is null");
}
else {
cd.play();
}
}
}
applicationcontext.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan base-package="zhl.soundsystem" />
</beans>
本示例参看Spring实战第四版中第二章节示例,手动eclipse敲入实现,通过学习,明白了隐式bean和自动装配,后面将深入代码理解其中的原理。
后期发现使用@Qualifier(“”) 在限定类中,@Component("")必须指定名称,否则运行报错
代码下载链接: https://pan.baidu.com/s/152WqwjoaubEF29RG1kU7kA 提取码: 4zia