Могу ли я сделать универсальный класс, который требует тип его универсального параметра Class<T>
в качестве аргумента конструктора, доступного как @Bean
в Spring?
Общий класс:
public class Repository<T> {
public Repository(Class<T> type) {
//...
}
}
Мои текущие @Bean
определения:
@Bean
public Repository<Car> carRepository() { return new Repository<>(Car.class) }
@Bean
public Repository<Garage> carRepository() { return new Repository<>(Garage.class) }
//... one for each type I require
Что бы я хотел:
@Bean
public <T> Repository<T> genericRepository() { return new Repository<>(T.class) }
Я уже изучил Spring 101 ResolvableType
, но, похоже, это не то, что я ищу. Есть ли способ получить класс T
, не требуя аргумента конструктора? Есть ли у пружины механизм для этого?