source

Spring REST 서비스, Jersey REST 서비스 및 Spring+Jersey 솔루션의 차이점은 무엇입니까?

manysource 2023. 3. 6. 21:18

Spring REST 서비스, Jersey REST 서비스 및 Spring+Jersey 솔루션의 차이점은 무엇입니까?

RESTful 서비스/API를 구축하고 싶다.놀이 같은 틀을 사용해서 만들었지만 좀 더 효율적인 방법을 시도해보고 싶습니다.Jersey는 REST API를 구축하기 위한 공통 라이브러리이며, Spring 또한 좋은 프레임워크라고 들었습니다.하지만 Spring+Jersey와 같은 솔루션도 보았습니다.그래서 저는 그 REST API 솔루션에 대해 조금 혼란스럽습니다.

그것들 중 무엇이 다른지 누가 제게 말해줄 수 있나요?Jersey REST, Spring REST, Spring+Jersey REST?

제 목표는 JSON을 입출력하는 몇 가지 REST API를 구축하는 것입니다.JSON/오브젝트 입력을 처리하고 JSON/오브젝트를 반환하기 위한 백엔드 프로세스 로직으로 jar 파일을 가지고 있습니다.

Jersey는 Sun이 제공하는 JAX-RS API의 구현 예이며, Spring REST는 물론 Spring이 동일한 API/JSR을 구현한 것입니다.주요 차이점은 Spring REST가 Spring Data REST와 같은 다른 Spring API에 쉽게 통합된다는 것입니다.

이들 사이에는 몇 가지 주목할 만한 차이가 있습니다.즉, Jersey Resources(스프링에서는 컨트롤러로 알려져 있음)를 서로 「포함」하고, 특정 패스의 서브 패스를 담당하는 다른 클래스를 유효하게 할 수 있습니다.단, 이 클래스는 현재 스프링에서는 사용할 수 없는 것 같습니다(풀 패스를 정의할 필요가 있습니다).또한 Jersey는 Jackson을 사용하여 JSON 페이로드를 Java bean에 매핑할 수 없는 이유 등 더 나은 "즉시" 오류 응답을 제공하는 반면 Spring은 약간의 추가 작업 없이 좀 더 쉽게 구성할 수 있습니다.

결국 이들 중 하나를 선택하는 차이는 보통 어플리케이션에 다른 Spring 라이브러리를 이미 통합하셨습니까?아니면 통합하실 예정입니까?Spring REST를 통합하는 것이 훨씬 쉬울 것 같다면, 그렇지 않으면 단순히 개인적인 취향일 뿐입니다.개인적으로 저는 저지를 좋아하지만, 스프링 프로젝트(예: 제가 강력히 추천하는 스프링 헤이트오아스)의 파워는 스프링을 더 나은 선택으로 만듭니다.당신의 경우 결정적인 요소는 없을 것 같습니다.

당신의 "골드" 타겟은 JSON 입출력 기능이 있는 단순한 API이므로 Spring REST 가이드를 따르는 것을 추천합니다.

한 가지 큰 차이는 유닛 테스트 지원 영역입니다.

Jersey Test Framework는 서버 측 코드를 조롱하는 데 적합하지 않습니다.를 들어 REST 리소스가 서비스에 의존하고 있는 경우 리소스 메서드를 테스트할 때 서비스를 조롱합니다.그러나 Jersey Tests에서는 별도의 컨테이너를 실행하고 유닛 테스트에서는 실행 중인 REST 리소스에 대한 호출이 이루어집니다.현시점에서는 서버측 코드를 조롱하기 위한 문서나 방법을 찾을 수 없습니다.

반대로 봄 MVC 테스트는 컨테이너를 필요로 하지 않으며 컨트롤러와 더 잘 통합됩니다.Dependency Injection을 사용하여 모의 서비스/DAO를 주입하여 더 나은 장치 테스트를 수행할 수 있습니다.

또한 스프링 프로젝트에 대한 문서는 저지에 비해 더 성숙하다는 것을 알게 되었습니다.

한 가지 미묘한 차이는 리소스(Jersey) 또는 컨트롤러(Spring) 개체의 인스턴스화입니다.

Jersey new는 각 요청에 대한 자원 객체입니다.단, 기본적으로는 Spring은 컨트롤러를 singleton의 기본범위로 콩으로 취급합니다.이것은 @Scope 주석으로 덮어쓸 수 있습니다(단, 그렇게 하면 Sonar에 의해 플래그가 지정됩니다).

이 Spring 기본 동작은 여러 번 어플리케이션을 손상시켰습니다.컨트롤러 클래스가 싱글톤일 경우 모든 클래스멤버는 사실상 스태틱합니다따라서 하나의 요청을 처리하는 값 집합은 다음 요청에도 그대로 유지됩니다.

Spring을 사용하는 경우 주의해야 할 사항입니다.Sonar 스캔을 하면 경고를 받지만 컨트롤러 클래스를 프로토타입으로 @Scope 하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/26824423/what-is-the-difference-between-spring-rest-service-jersey-rest-service-and-spri