spring使用泛型作为自动装配限定符

java泛型可以作为隐式限定

@Component
public class Store {
    private T content;

    public T getContent() {
        return content;
    }

    public void setContent(T content) {
        this.content = content;
    }
}
@Component
public class IntegerStore extends Store {

}
@Component
public class StringStore extends Store {
}

 

@Component
public class WorkBean {
    @Autowired
    private Store s1;
    @Autowired
    private Store s2;
    @Autowired
    private List> 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和数组

https://docs.spring.io/spring-framework/docs/4.3.10.RELEASE/spring-framework-reference/htmlsingle/#beans-generics-as-qualifiers

你可能感兴趣的:(java)