首页 > 解决方案 > 创建基本控制器时无法使用泛型

问题描述

我想用这样的通用创建一个基本控制器

@RestController
public class BaseController<T extends BaseEntity, S extends BaseServiceI<T, D extends BaseDao<T>>> {
    @Autowired
    private HttpServletRequest mRequest;
    @Autowired
    private HttpServletResponse mResponse;

    @Autowired
    private S service;

但正如你在这张图片中看到的,IDEA 有一个编译错误。

基本控制器的代码

有谁知道问题是什么?这是“BaseService”的代码,没问题

public interface BaseServiceI<T, V extends BaseDao<T>> {

我接受了您(@Piotr Żmudzin)的更改,它对我有用,非常感谢!

但是当我使用这种方式获取服务实例时会引起另一个问题。这是获取实例的错误方式吗?@Piotr Żmudzin

public class ProjectInfoController extends BaseController<ProjectInfo, ProjectInfoServiceI, ProjectInfoDao> {


问题:</p>

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

[2020-12-15 22:35:09:719] Failed to read the entry class, please make sure the accuracy of the registration certificate!Error creating bean with name 'baseController': Unsatisfied dependency expressed through field 'service'; nested exception is 

标签: javaspringspring-boot

解决方案


您的类型参数不正确,请更改它们

从:

<T extends BaseEntity, S extends BaseServiceI<T, D extends BaseDao<T>>>

至:

<T extends BaseEntity, S extends BaseServiceI<T, D>, D extends BaseDao<T>>

推荐阅读