Может ли кто-нибудь объяснить мне разницу между контроллером уровня класса и контроллером уровня метода..?

Я новичок в 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", а также пропустить сопоставление классов. Но в основном мы предпочитаем первый подход.