Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring中带泛型的嵌套自动布线_Java_Spring_Generics_Dependency Injection - Fatal编程技术网

Java Spring中带泛型的嵌套自动布线

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

我的理解是,从Spring4开始,泛型类型可以用作有效的限定符。在以下(基本)示例中,这很好:

我得到一份工作

com.example.demo.SomeOtherService中的字段tTypeResolver需要一个bean,但找到了2个


例外。有没有办法解决这个问题,或者这只是一个固有的限制,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;

   ...
}