Java Spring中带泛型的嵌套自动布线
我的理解是,从Spring4开始,泛型类型可以用作有效的限定符。在以下(基本)示例中,这很好: 我得到一份工作 com.example.demo.SomeOtherService中的字段tTypeResolver需要一个bean,但找到了2个Java Spring中带泛型的嵌套自动布线,java,spring,generics,dependency-injection,Java,Spring,Generics,Dependency Injection,我的理解是,从Spring4开始,泛型类型可以用作有效的限定符。在以下(基本)示例中,这很好: 我得到一份工作 com.example.demo.SomeOtherService中的字段tTypeResolver需要一个bean,但找到了2个 例外。有没有办法解决这个问题,或者这只是一个固有的限制,spring只能在有限的范围内绕过类型擦除?我使用的是spring boot 2.1.8.RELEASE。编译时不存在泛型,因此自动关联泛型类型的意义不大。 所以你可以通过这样的方式来实现这一点 @S
例外。有没有办法解决这个问题,或者这只是一个固有的限制,spring只能在有限的范围内绕过类型擦除?我使用的是spring boot 2.1.8.RELEASE。编译时不存在泛型,因此自动关联泛型类型的意义不大。 所以你可以通过这样的方式来实现这一点
@Service
public class SomeService{
@Autowired
private TypeResolver<Integer> integerTypeResolver;
@Autowired
private TypeResolver<String> stringTypeResolver;
...
}
@服务
公共类服务{
@自动连线
专用类型解析程序integerTypeResolver;
@自动连线
专用类型解析程序stringTypeResolver;
...
}
编译时不需要
SomeOtherService
泛型,因此自动关联泛型类型的意义不大。
所以你可以通过这样的方式来实现这一点
@Service
public class SomeService{
@Autowired
private TypeResolver<Integer> integerTypeResolver;
@Autowired
private TypeResolver<String> stringTypeResolver;
...
}
@服务
公共类服务{
@自动连线
专用类型解析程序integerTypeResolver;
@自动连线
专用类型解析程序stringTypeResolver;
...
}
不需要
其他服务
为之前的ans道歉。你是对的。因此我编辑了我的答案。请检查我编辑的答案返回到原始错误。将@Scope(“singleton”)
添加到bean定义中并没有解决问题。“泛型在编译时不存在”泛型在编译时肯定存在。很抱歉,前面的ans是正确的。因此我编辑了我的答案。请检查我编辑的答案返回到原始错误,我很抱歉。将@Scope(“singleton”)
添加到bean定义中并没有解决问题。“泛型在编译时不存在”泛型肯定在编译时存在。
@Service
public class SomeService{
@Autowired
private TypeResolver<Integer> integerTypeResolver;
}
@Service
public class SomeOtherService<T>{
@Autowired
private TypeResolver<T> tTypeResolver;
}
@Service
public class SomeService{
@Autowired
private SomeOtherService<Integer> someOtherService;
}
@Service
public class SomeService{
@Autowired
private TypeResolver<Integer> integerTypeResolver;
@Autowired
private TypeResolver<String> stringTypeResolver;
...
}