背景介绍
Type在java中表示类型,包括了
Class:
ParametedType: List
WildType: 如
ArrayType: 如T[]
TypeVariable: 如T
解决一个实际问题
需求:假设我们有一个Repository接口,有2个实现类Repository和Repository2个bean,但是我们只想用到其中的一个bean,如personRepository。
解决:
直接使用@Autowired注入带有泛型的Repository即可
@Service("testService")
public class TestService {
// 直接注入带有泛型的Repository对象即可。因为Spring对泛型提供了底层的支持(即就是使用java中的type)
@Autowired
private Repository<Person> aaaa;
}
Spring对type的支持点举2个例子
Spring中对泛型提供了很好的支持,底层原理就是java的type。
如:
1、在@Autowired的自动注入
2、Listener的事件监听体系中也可以根据泛型类型来监听具体详细的事件。