java泛型可以作为隐式限定
@Component
public class Store<T> {
private T content;
public T getContent() {
return content;
}
public void setContent(T content) {
this.content = content;
}
}
@Component
public class IntegerStore extends Store<Integer> {
}
@Component
public class StringStore extends Store<String> {
}
@Component
public class WorkBean {
@Autowired
private Store<String> s1;
@Autowired
private Store<Integer> s2;
@Autowired
private List<Store<String>> s3;
public void work(){
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring/annotation.xml");
ac.getBean(WorkBean.class).work();
}
输出
com.tz.test.spring.annotation.StringStore@397b0012
com.tz.test.spring.annotation.IntegerStore@593fa6c5
[com.tz.test.spring.annotation.StringStore@3a41bb39]
这种方式同样适用自动装配list、map和数组