Нет ничего плохого в том, чтобы поставить @RequestMapping
на интерфейс. Однако убедитесь, что у вас есть правильные причины для этого. Полиморфизм, вероятно, не является хорошей причиной, у вас не будет другой конкретной реализации, замененной во время выполнения, или что-то в этом роде.
С другой стороны, например, Swagger Codegen генерирует интерфейсы с @RequestMapping
и всеми аннотациями для методов, полей и типов возврата (вместе с @Api
определениями и т. Д.). Ваш контроллер затем реализует этот интерфейс. В этом случае это имеет большой смысл, потому что он просто заставляет вас уважать определение интерфейса Swagger / OpenAPI, изначально определенное в Yaml. Есть хороший побочный эффект, который делает ваш контроллер намного чище. (Клиенты также могут использовать один и тот же Yaml для создания своих собственных клиентских заглушек для своих языковых платформ).
Если вы решите сделать это, убедитесь, что вы используете последнюю версию Spring Framework, потому что были некоторые ошибки, которые были исправлены совсем недавно, когда не все аннотации были унаследованы.
https://github.com/spring-projects/spring-framework/issues/15682
Если вы застряли в более старой версии Spring, вам может потребоваться повторить те же аннотации в вашем контроллере.
Таким образом, настоящая причина, по которой это имеет смысл, заключается в том, чтобы обеспечить выполнение интерфейса интерфейса и отделить определение интерфейса (вместе с любой информацией, относящейся к интерфейсу) от фактической конкретной реализации.