Spring MVC: есть ли у RequestMapping, GetMapping, PostMapping ... общий суперкласс? - PullRequest
0 голосов
/ 06 августа 2020
    public static void printPaths(RequestMapping mapping) {
        System.out.println(String.join(",",mapping.path()));
    }

следующий код не может работать. Интересно, что респонденты, отвечающие за переполнение стека, не будут внимательно читать вопрос, прежде чем опровергнуть его.

        final GetMapping getMapping = method.getAnnotation(GetMapping.class);
        printPaths(getMapping);

есть ли тип X, когда я использую его следующим образом: работает хорошо?

        //WhateverMapping means it could be RequestMapping, or GetMapping, or PostMapping, or .....
        final WhateverMapping whateverMapping = method.getAnnotation(WhateverMapping.class);
        printPaths(whaterverMappingMapping);

Большое спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

Это невозможно, поскольку @GetMapping представляет собой составную аннотацию, суперкласс отсутствует. Обходной путь - использовать только @RequestMapping, поскольку @GetMapping - это просто ярлык для @RequestMapping (method = GET).

GetMapping mapping = method.getAnnotation(GetMapping.class);
System.out.println(mapping instanceof RequestMapping); // false
...