29.3 JAX-RS and Jersey

REST 엔드 포인트 용 JAX-RS 프로그래밍 모델을 선호한다면 Spring MVC 대신 사용 가능한 구현 중 하나를 사용할 수있다. JerseyApache CXFwork는 매우 잘 어울립니다. CXF를 사용하려면 응용 프로그램 컨텍스트에서 @Bean으로 Servlet또는 Filter를 등록해야합니다. Jersey에는 기본 Spring 지원이 있으므로 Spring Boot에서 자동 구성 지원을 시작과 함께 제공합니다.

Jersey

Sun의 311에서 구현된 JAX-RS: RESTful 웹 서비스용 Java API

  • JAVA SE5에 소개된 어노테이션을 사용하여 정의된 사양 (대표적인 어노테이션으로 @Path, @GET, @POST, @PUT)

JSR-311에서 정의된 내용을 가지고 있기 때문에 개발자는 java 및 java JVM으로 Restful 웹 서비스를 쉽게 작성할 수 있음.

JSR에서 지정하지 않은 추가 기능도 지원

Jersey를 시작하려면 spring-boot-starter-jersey를 종속성으로 포함시킨 다음, 다음 예와 같이 모든 끝점을 등록하는 ResourceConfig유형의 @Bean이 하나 필요합니다.

@Component
public class JerseyConfig extends ResourceConfig {

	public JerseyConfig() {
		register(Endpoint.class);
	}

}

Jersey는 실행 가능한 아카이브 검사에 대한 지원을 제한합니다. 예를 들어, 실행 가능 war 파일을 실행할 때 WEB-INF/classes에있는 fully executable jar file에있는 패키지의 엔드 포인트를 스캔 할 수 없습니다. 이 제한을 피하려면 패키지 메소드를 사용하면 안되며, 앞의 예제와 같이 register메소드를 사용하여 엔드 포인트를 개별적으로 등록해야합니다.

고급 사용자 정의를 위해 ResourceConfigCustomizer를 구현하는 임의의 수의 Bean을 등록 할 수도 있습니다.

다음 예와 같이 등록된 모든 엔드 포인트는 HTTP 자원 주석 (@GET 및 기타)이있는 @Components 여야합니다.

@Component
@Path("/hello")
public class Endpoint {

	@GET
	public String message() {
		return "Hello";
	}

}

Endpoint는 Spring @Component이므로 Spring의 라이프 사이클을 관리하고 @Autowired주석을 사용하여 종속성을 주입하고 @Value 주석을 사용하여 외부 구성을 주입 할 수 있습니다. 기본적으로 Jersey 서블릿은 등록되고 /*에 매핑됩니다. ResourceConfig@ApplicationPath를 추가하여 매핑을 변경할 수 있습니다.

기본적으로 Jersey는 jerseyServletRegistration이라는 jerseyServletRegistration유형의 @Bean에 서블릿으로 설정됩니다. 기본적으로 서블릿은 느리게 초기화되지만 spring.jersey.servlet.load-on-startup을 설정하여 해당 동작을 사용자 정의 할 수 있습니다. 동일한 이름으로 고유 한 bean을 작성하여 해당 bean을 사용 불가능하게하거나 대체 할 수 있습니다. spring.jersey.type=filter를 설정하여 서블릿 대신 필터를 사용할 수도 있습니다 (이 경우 교체하거나 무시할 @BeanjerseyFilterRegistration입니다). 필터에는 @Order가 있으며 spring.jersey.filter.order를 사용하여 설정할 수 있습니다. 서블릿과 필터 등록 모두에 spring.jersey.init.*를 사용하여 속성의 맵을 지정하여 초기화 매개 변수를 제공 할 수 있습니다.

Jersey sample이 있으므로 설정 방법을 볼 수 있습니다.

Last updated