我在下面的课程中尝试注入一些JpaRepository
依赖项。
class Sample<T> implements SampleInterface<T> {
@Autowired
JpaRepository<T, Long> jpaRepository; // Want this to be injected by spring using A as entity
}
class Main {
@Bean
Sample<A> sample() {
return new Sample<A>(); // A is a jpa entity
}
}
是因为在编译过程中解析了注解吗?为什么不能使用泛型使spring自动布线自动化?我可能会错过基本知识,但想填补这一知识空白。
答案 0 :(得分:2)
其原因是类型擦除,它在编译时发生,而bean注入在运行时发生。
由于没有限制,T
被擦除并基本上由Object
取代,并且Spring Data无法为Object
创建存储库。