Какой способ весной считается лучшей практикой в области разработки программного обеспечения:
1) используя аннотацию spring @RequestParam
@RequestMapping(value = "/doSomeThing", method = RequestMethod.GET)
@ResponseBody
public boolean doSomeThing(@RequestParam("name") String name) {
boolean success = false;
// do the logic
return success;
}
2) с помощью метода запроса getParameter
@RequestMapping(value = "/doSomeThing2", method = RequestMethod.GET)
@ResponseBody
public boolean doSomeThing2(HttpServletRequest request) {
boolean success = false;
String name = request.getParameter("name");
// do the logic
return success;
}
пожалуйста, разместите этот вопрос на codereview.stackexchange.com
То же самое, я предпочитаю первый, позволяющий пропустить некоторый шаблонный код, сделать его более читаемым imo
@arthur как таковой, вопрос не по теме CR. Он получил перекрестную публикацию by ayman и сразу был отклонен и закрыт. Пожалуйста, не перенаправляйте пользователей на другие сайты StackExchange, не проверив их правила. Для получения дополнительной информации о CR см. руководство для пользователей SO.




Я бы использовал аннотацию @RequestParam, потому что в этом случае ваш код будет более читаемый и проще юнит-тест.
Почему читабельнее?
Потому что ясно, что вы зависите от HTTP API только для этого единственного параметра. HttpServletRequest - большой объект, с ним можно делать многое. В этом случае вы используете только очень небольшую часть этой функциональности. Код более читабелен, если сигнатура метода максимально конкретна. Параметр типа HttpServletRequest менее специфичен, чем параметр типа String.
Это соответствует Принцип разделения интерфейса (клиент должен быть вынужден зависеть от методов, которые он не использует).
Почему проще тестировать?
Используя @RequestParam, не надо ничего издеваться!
Если у вас есть HttpServletRequest в качестве параметра, то для модульного тестирования вам нужно тщательно имитировать этот объект - осторожно издеваться над каждым вызовом getParameter.
Еще одно преимущество - автоматическое преобразование: RequestParam может быть int, LocalDate, Long и т. д. И правильный ответ об ошибке будет отправлен обратно, если значение не может быть преобразовано.
Да, я согласен с аннотацией @RequestParam, которую я лично использовал в своем Приложение spring-mvc для операций CRUD и многих других операций, таких как отображение сохраненной таблицы на странице jsp и все такое.
В первую очередь основано на мнении: первое!