Моим контроллерам требуются общие функциональные возможности, такие как -инспектирование параметров входящих запросов и -включение заголовков в исходящем ответе.
Чтобы избежать шаблонов родительских / дочерних контроллеров, вызывающих друг друга, я воспользовался весенними аннотациями /hooks.
Для анализа и проверки параметров запроса я прошел маршрут класса рекомендаций контроллера и аннотировал там метод с помощью @ModelAttribute - который вызывает весной перед методами маршрута и - который можно использовать, чтобы сделать объекты доступными вмодель.
Чтобы включить заголовки во все ответы, я пошел по пути расширения ResponseBodyAdvice, где, используя пользовательские аннотации, вы можете использовать метод отображения контроллера, чтобы указать совету контроллера, следует ли его вызывать для этого ответа.
Слабым местом для меня здесь является сообщение от диспетчера к совету для ответа.Я пошел по пути метода сопоставления настраиваемых аннотированных контроллеров, задав атрибут в запросе для последующего использования в совете по ответу (и задокументировав, что аннотированные методы должны это делать).