我具有以下代码结构
customer<-scan("E:/Data science course/R/practice/customers.csv",
what=List(First_name="",
Last_name="",
City="", county="", state="",zip=0),
sep=",", skip=1,)
Spring表示他无法确定正在使用哪种类型的dao。我可以做吗? 我读了几篇文章,但没有找到答案(https://blog.jayway.com/2013/11/03/spring-and-autowiring-of-generic-types/,How to Autowire Bean of generic type <T> in Spring?)。
答案 0 :(得分:2)
我通常这样做:
public class MyService<T extends AbstractMyDao>{
private T myDao;
public MyService(T dao){
myDao = dao;
}
}
@Configuration
public class ServiceConfig {
@Bean
public MyService<FirstMyDao> myServiceFirstMyDao(FirstMyDao fmd){
return new MyService(fmd);
}
}
这应该可行,因为FirstMyDao fmd
将自动接线,然后您将拥有一个可注射的豆MyService<FirstMyDao>
请注意,由于Spring不知道@Service
是什么,因此您从通用类中删除了T
。
答案 1 :(得分:2)
我认为您应该在@Scope("prototype")
中使用MyService
具有作用域原型的Bean是为要注入的每个对象创建的。
示例:
@Service
@Scope("prototype")
public class MyService<T extends AbstractMyDao>{
@Autowired
private T myDao;
}