1.新建maven quickStart项目
2.POM.XML
导入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
3.接口
public interface IDisk {
void output(String value);
}
4.实现类1
public class MachineDisk implements IDisk {
@Override
public void output(String value) {
System.out.println("机械硬盘输出: " + value);
}
}
.5.实现类2
public class SSDDisk implements IDisk {
@Override
public void output(String value) {
System.out.println("固态硬盘:" + value);
}
}
6.使用了接口的computer类
public class Computer {
private IDisk disk;
public IDisk getDisk() {
return disk; }
public void setDisk(IDisk disk) {
this.disk = disk; }
public void print(String value) {
// 调用了接口方法,实际是实现类调用了output方法
disk.output(value);
}
}
7.注入配置文件
<?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">
<!--
在启动 spring容器的时候,会根据 xml 文件的配置,生成一个对象,放到spring容器中。
MachineDisk machineDisk = new MachineDisk();
-->
<bean id="machineDisk" class="org.example.service.impl.MachineDisk"></bean>
<bean id="ssdDisk" class="org.example.service.impl.SSDDisk"></bean>
<bean id="computer" class="org.example.service.Computer"></bean>
</beans>
8.测试注入容器
public class ContainerTest {
public static void main(String[] args) {
/**
* 1. ApplicationContext,就是所说的 Spring 的容器。
* 2. new ClassPathXmlApplicationContext("META-INF/spring-context.xm"); 表示创建一个容器
*/
ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring-context.xml");
// 1.context.getBeanDefinitionNames() 获取spring容器中所有对象(bean)的名字
Stream.of(context.getBeanDefinitionNames()).forEach(System.out::println);
// context.getBean(String name): 表示从容器中年获取某个 Bean,是Object类型需要强转
IDisk machineDisk = (IDisk) context.getBean("machineDisk");
machineDisk.output("图片");
}
}