Весенние аннотации для запросов GET

В чем разница между этими двумя типами пружинных методов GET? Какой из них является предпочтительным методом?

@Component
@Scope("request")
@Path("/")
public class TestComponent {

    @GET
    @Path("/hello")
    public String printHello() {
          return "hello";
    }
}

против

@Controller
public class TestController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String printHello() {
         return "hello"
    }
}

2 ответа

В чем разница между этими двумя типами пружинных методов GET?

Только один из двух приведенных вами примеров является фактическим Spring GET, а это второй @RequestMapping(value = "/hello", method = RequestMethod.GET) аннотаций. Это реализация Spring MVC.

Другой, первый @GET @Path("/hello"), на самом деле является спецификацией JAX-RS GET, и вам потребуется реализация JAX-RS, чтобы она работала.

Основные различия между ними заключаются не только в "GET", но и в общих рамках. Уже есть подробные статьи, подобные этой, освещающие различия между JAX-RS и Spring MVC RESTful.

Поскольку REST не является формальной спецификацией, ее реализация может незначительно отличаться от одного поставщика от другого, но концепция та же.

Какой из них является предпочтительным методом?

RESTful Spring MVC будет более тесно интегрирован в Spring Framework.

JAX-RS будет следовать реализации Java EE, а интеграция принесет пользу полной среде Java EE.

И вы также можете "объединить" Spring и Java EE. Существуют разъемы, которые могут интегрировать Spring и JAX-RS, чтобы вы могли воспользоваться тем или иным. Смотрите этот пример.

Таким образом, предпочтительный метод зависит. Вообще говоря:

  • Если вы работаете в полном контейнере Java EE (например, JBoss или Glassfish), используйте метод JAX-RS. Реализация для JAX-RS уже будет доступна в среде.
  • Если вы работаете в Spring IoC и хотите оставаться в стороне от Java EE, используйте Spring MVC RESTful метод.
  • Если вы используете веб-профиль Java EE, такой как Tomcat, вам нужно будет решить, основываясь на определенных критериях, например, какую инфраструктуру интерфейса вы будете использовать, и для этого вы создаете приложение.

Я обнаружил, что Spring проще настраивать и настраивать в Tomcat, но это мое мнение. Также обработка исключений Spring @ControllerAdvice а также @ExceptionHandler Я решил, что RESTful JSON отлично справляется с тем, что мне нужно, но, возможно, есть что-то похожее и для JAX-RS.

В качестве последнего утверждения я думаю, что вы должны определить свою среду RESTful (JAX-RS, Spring или даже другую), основанную главным образом на том, в какой среде вы собираетесь работать, а также на учете всех интеграций и ресурсов, которые вам понадобятся для Ваш проект.

Первый метод - это метод JAX-RS, который совместим с любой реализацией JAX-RS.

Второй использует аннотации Spring MVC и совместим только с Spring MVC.

Другие вопросы по тегам