Java 没有类型参数的继承控制器方法不能与RequestMapping一起映射

Java 没有类型参数的继承控制器方法不能与RequestMapping一起映射,java,spring,spring-mvc,spring-annotations,Java,Spring,Spring Mvc,Spring Annotations,我为我的最新web app项目创建了一个基本Spring控制器,我从中继承了所有基本CRUD控制器,称为CrudController: class CrudController<T, K extends Serializable> 经过大量实验,我发现如果我向getAll方法添加一个参数,该方法是类参数类型之一,那么该方法将被映射。查看以下非常类似的代码: @RequestMapping(method = RequestMethod.GET) public HttpEntity&l

我为我的最新web app项目创建了一个基本Spring控制器,我从中继承了所有基本CRUD控制器,称为CrudController:

class CrudController<T, K extends Serializable>
经过大量实验,我发现如果我向getAll方法添加一个参数,该方法是类参数类型之一,那么该方法将被映射。查看以下非常类似的代码:

@RequestMapping(method = RequestMethod.GET)
public HttpEntity<?> getAll(K dontuse) {
    Iterable<T> result = controllerRepository.findAll();
    return new ResponseEntity<Object>(result, HttpStatus.OK);
}
@RequestMapping(method=RequestMethod.GET)
公共HttpEntity getAll(K dontuse){
Iterable result=controllerRepository.findAll();
返回新的响应状态(结果,HttpStatus.OK);
}
有了这个小小的代码更改,
/find
调用就可以正常工作了。我可以把我的虚拟参数放在那里,一切都可以正常工作,但它有气味

有什么想法吗?可在此处找到复制该问题的简化项目:


Java中当前有一个bug,请参阅bug报告,其中为声明为包私有的超类中的每个继承方法返回一个桥接
方法。基于javadoc,它不应该这样做

这混淆了SpringMVC对
@Controller
注释类和处理程序方法的检查。在这个答案中详细讨论并不是很有用,但是您可以查看处理它的代码

最简单的解决方案是将
crudepository
类声明为
public

public class CrudController<T, K extends Serializable> 
公共类CrudController

这是一个很棒的疑难解答,+1
@RequestMapping(method = RequestMethod.GET)
public HttpEntity<?> getAll(K dontuse) {
    Iterable<T> result = controllerRepository.findAll();
    return new ResponseEntity<Object>(result, HttpStatus.OK);
}
public class CrudController<T, K extends Serializable>