Может ли кто-нибудь объяснить мне разницу между контроллером уровня класса и контроллером уровня метода..?
Я новичок в spring framework.... во время поиска в google.. Я нашел несколько примеров, которые @RequestMapping, записанные на уровне класса, и несколько примеров, показывающих его на уровне menthod
Когда использовать класс класса RequestMapping и уровень menthod RequestMapping аннотации... может ли кто-нибудь объяснить мне разницу между уровнем класса RequestMapping и уровнем метода RequestMapping..??
поэтому я немного смущен их выражением по адресу:
a) Уровень класса
b) Уровень метода
Также я нашел несколько @Requestmapping
с типом: GET/Post, тогда как некоторые примеры не имеют параметра типа.
Какой подход лучше.
Являются ли более новые версии ( > Spring 2.5) не нужны типы параметров для сопоставления запросов?
Ответы
Ответ 1
Контроллер должен быть помечен как @Controller
на уровне класса. Аннотация @RequestMapping
может применяться как на уровне класса, так и на уровне метода. Если это так, аннотации методов будут интерпретироваться как относительные URL-адреса (относительно URL-адреса на уровне класса). Однако должны присутствовать аннотации уровня метода, иначе метод не будет отображаться.
В аннотации параметры могут быть помечены как необязательные значения по умолчанию. Параметр метода такой: по умолчанию он равен GET
, но может быть явно установлен на POST
или что-то еще.
См:
Ответ 2
Чтобы ответить на ваш последний вопрос, то есть лучше, я бы сказал, что в производстве мы используем комбинацию этих двух. Например, если есть пользовательский контроллер, мы сопоставляем класс с "/user", а методы для getSettings()
будут отображаться в "/settings", а метод для getPermissions()
будет отображаться в "/permissions" и т.д.
Вы можете напрямую сопоставить эти методы с "/user/settings" и "/user/permissions", а также пропустить сопоставление классов. Но в основном мы предпочитаем первый подход.