1. Обзор
В этом руководстве мы увидим разницу между JAX-RS и Spring MVC для разработки REST API.
2. Веб-сервисы RESTful в Джакарте
Чтобы стать частью мира JAVA EE , функция должна иметь спецификацию, совместимую реализацию и TCK . Соответственно, JAX-RS — это набор спецификаций для построения REST-сервисов . Наиболее известными эталонными реализациями являются RESTEasy и Jersey .
Теперь давайте немного познакомимся с Джерси, реализуя простой контроллер:
@Path("/hello")
public class HelloController {
@GET
@Path("/{name}")
@Produces(MediaType.TEXT_PLAIN)
public Response hello(@PathParam("name") String name) {
return Response.ok("Hello, " + name).build();
}
}
Выше конечная точка возвращает простой ответ «text/plain», как указано в аннотации @Produces
. В частности, мы предоставляем HTTP- ресурс hello
, который принимает параметр name
с двумя аннотациями @Path
. Нам также нужно указать, что это запрос GET
, используя аннотацию @GET
.
3. ОТДЫХ С Spring MVC
Spring MVC — это модуль Spring Framework для создания веб-приложений. Он добавляет возможности REST в Spring Framework.
Давайте сделаем эквивалентный пример запроса GET
, как указано выше, используя Spring MVC:
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping(value = "/{name}", produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<?> hello(@PathVariable String name) {
return new ResponseEntity<>("Hello, " + name, HttpStatus.OK);
}
}
Глядя на код, @RequestMapping
утверждает, что мы имеем дело с ресурсом hello
HTTP. В частности, с помощью аннотации @GetMapping
мы указываем, что это запрос GET
. Он принимает параметр с именем name
и возвращает текстовый/обычный ответ.
4. Отличия
JAX-RS зависит от предоставления набора аннотаций Java и применения их к простым объектам Java. Действительно, эти аннотации помогают нам абстрагироваться от низкоуровневых деталей взаимодействия клиент-сервер. Чтобы упростить их реализацию, он предлагает аннотации для обработки HTTP-запросов и ответов и связывания их в коде. JAX-RS — это только спецификация, и для ее использования требуется совместимая реализация .
С другой стороны, Spring MVC — это полноценный фреймворк с возможностями REST . Как и JAX-RS, он также предоставляет нам полезные аннотации для абстрагирования от низкоуровневых деталей. Его главное преимущество заключается в том, что он является частью экосистемы Spring Framework . Таким образом, это позволяет нам использовать внедрение зависимостей, как и любой другой модуль Spring. Кроме того, он легко интегрируется с другими компонентами, такими как Spring AOP , Spring Data REST и Spring Security .
5. Вывод
В этой быстрой статье мы рассмотрели основные различия между JAX-RS и Spring MVC.
Как обычно, исходный код этой статьи доступен на GitHub .