如何正确覆盖抽象通用 restcontroller 中声明的方法?

How can I properly override a method declared in an abstract generic restcontroller?


我在通过一些预先存在的代码实现功能时遇到了一些问题。

从事此项目的其他程序员之前定义了一个通用抽象 "restcontroller"(它实际上并未注释为 @RestController,但它意味着通过带有该注释的 classes 进行扩展)

public abstract class AbstractController<T extends AbstractEntity, R extends JpaRepository<T, Integer>> {
    @GetMapping(value = "/getall")
    public Paging<T> getAll(@RequestParam Integer itemsPerPage,
                            @RequestParam Integer pageIndex,
                            @RequestParam Map<String, String> filters,
                            @Autowired Consumer consumer) {

        //Fetch entities of type T from repository R and return them
    }

    //other generic crud operations

}

这 class 通常由具体的控制器扩展,这些控制器只在其特定类型上定义其他操作,但不改变通用的 crud 操作。
我想要做的是扩展此 class,但覆盖 getAll 方法,如下所示:

@RestController
@RequestMapping("/api/tasks")
public class TaskController extends AbstractController<Task, TaskRepository> {
    @Override
    public Paging<Task> getAll(Integer itemsPerPage, Integer pageIndex, Map<String, String> filters, Consumer consumer) {
        LoggerFactory.getLogger(LazyTaskController.class).log("function called successfully!");
        Paging<Task> paging = super.getAll(itemsPerPage, pageIndex, filters, consumer);
        //do things with return value before returning
        return paging;
    }

}

如果我在不覆盖 getAll 方法的情况下调用 BASEURL/api/tasks/getall?itemsPerPage=25&pageIndex=0,则参数连接正确(Map 包含两个值,itemsPerPage 和 pageIndex,如预期的那样,consumer 包含 intercace Consumer 的具体实现)。
但是,如果我确实覆盖了它,则 Map 出于某种原因包含两个值,一个具有键 "consumer" 和代理类型,另一个具有键 "org.springframework.validation.BindingResult.consumer" 和 BeanPropertyBindingResult 类型的值;消费者包含一个代理。

我想 @Override 会干扰 Consumer 的自动装配,但我不知道如何正确地实现我的想法(在返回之前处理 getAll 的结果)。
提前谢谢你

没关系,我解决了
通过向重写的方法参数添加@RequestParam 和@Autowired 注释解决了 Map 的问题。
Consumer 具体类型的问题通过应用我在代码库中的另一个 class 上找到的自定义注释以某种方式解决了,我仍然不确定该注释的作用但至少我知道现在要查找什么.