1.需要装list的类
public class Test {
private List<TestInterface> testInterface;
}
2.接口
public interface TestInterface{
public void sayHello();
}
3.装载方式
第一种:xml直接注入
实现接口
public class Test1 implements TestInterface {
public void sayHello() {
System.out.println("111111111111111");
}
}
public class Test2 implements TestInterface {
public void sayHello() {
System.out.println("2222222222222222222222");
}
}
在xml 里面如下配置:
<bean class="com.demo.Test">
<property name = "testInterface">
<list>
<bean class = "com.demo.Test1"/>
<bean class = "com.demo.Test2"/>
</list>
</property>
</bean>
即可装载成功
第二种:注解装载
@Component
public class Test1 implements TestInterface {
public void sayHello() {
System.out.println("111111111111111");
}
}
@Component
public class Test2 implements TestInterface {
public void sayHello() {
System.out.println("2222222222222222222222");
}
}
直接使用@Autowired或者@Resource注入
public class Test {
@Autowired
private List<TestInterface> testInterface;
}
第三种:xml util:list装载
在xml里面如下配置
<util:list id = "testList" list-class="java.util.ArrayList" >
<bean class = "com.demo.Test1"/>
<bean class = "com.demo.Test2"/>
</util:list>
在使用的地方注入,只能用@Resource注入,而且变量名称必须和xml中的util:list的声明的id一样
public class Test {
//无法注入 报错
@Autowired
private List<TestInterface> testInterface;
//无法注入 报错
@Autowired
private List<TestInterface> testList;
//无法注入 报错
@Resource
private List<TestInterface> testInterface;
//注入成功
@Resource
private List<TestInterface> testList;
}