Я пытаюсь найти наилучший способ написать общую логику в приложении Spring MVC. У меня есть контроллер A, который будет вызываться, который будет вызывать любой другой контроллер на основе атрибутов запроса, которые возвращают JSON данные.
Я хочу получить ответ обратно в контроллер А, чтобы я мог написать общую логику обогащения и отправить его обратно в браузер. Моя цель — написать логику обогащения только в одном месте, и каждый запрос проходит через нее.
то, что вы ищете, это так называемый «HandlerInterceptor» или «controllerAdvice» —
я сделал небольшой репозиторий на GitHub о Spring MVC Interception Некоторое время назад — это небольшое приложение для весенней загрузки, которое показывает способы перехвата запроса с помощью Spring MVC.
Вопрос всегда в том, какова ваша главная цель:
Вы хотите просто манипулировать выводом (например, добавляя общее поле), используя ControllerAdvice
Вы хотите вызвать логику до и после, не манипулируя запросом -> перейти к фильтрам
Вы хотите фундаментально изменить объект (например, обернуть его другим объектом), перейдите на HandlerInterceptor
Может быть, вы можете создать абстрактный класс контроллера и поместить в него общую логику или код. Поэтому, где бы вы ни хотели использовать этот общий код, просто расширяйте этот класс и используйте его.
Например :
public class AbstractController{
// common logic
}
public class A extends AbstractController{}
public class B extends AbstractController{}
public class C extends AbstractController{}