JAX-RS 프로바이더의 의미
JAX-RS 프로바이더의 개요와 '@Provider' 주석의 기능에 대해 설명해 주실 수 있습니까?류류읽읽읽읽읽있있있돼돼는돼돼돼돼돼 。
수신 요청을 처리하는 리소스 클래스가 있는 경우 공급자는 어떻게 합니까?영속적인 자원 클래스(요구별이 아닌 것)를 작성했을 때의 싱글톤 자원 클래스와는 어떻게 다른가요?니면 그그 ?? 공?? ????
프로바이더는 JAX-RS 런타임을 확장 및 커스터마이즈하는 단순한 방법입니다.이러한 플러그인은 일련의 (프로그램 정의) 목표를 달성하기 위해 (잠재적으로) 런타임 동작을 변경하는 플러그인으로 간주할 수 있습니다.
프로바이더는 자원 클래스와 동일하지 않습니다.개념적으로는 자원 클래스와 JAX-RS 구현 사이의 수준에서 존재합니다.도움이 되는 경우는, 디바이스 드라이버와 같은 관점에서 생각할 수 있습니다(유저와 커널의 공간 사이에 존재).이것은 대략적인 일반화이다.
현재의 JAX-RS 사양에 의해 정의되어 있는 프로바이더의 클래스는 3종류가 있습니다.이들 간의 공통점은 모든 공급자가 @Provider 주석으로 식별되어야 하며 컨스트럭터 선언을 위한 특정 규칙을 따라야 한다는 것입니다.이와는 별도로, 다른 프로바이더 타입에는 추가 주석이 있을 수 있으며, 다른 인터페이스를 구현합니다.
엔티티 프로바이더
이러한 공급자는 데이터 표현(XML, JSON, CSV 등)을 Java 오브젝트에 대한 매핑을 제어합니다.
콘텍스트 프로바이더
이러한 공급자는 리소스가 @Context 주석을 통해 액세스할 수 있는 컨텍스트를 제어합니다.
예외 공급자
이러한 공급자는 Java 예외와 JAX-RS 응답 인스턴스의 매핑을 제어합니다.
런타임에는 기본 수준의 기능 구현(XML과의 매핑, 가장 일반적인 예외 번역 등)을 담당하는 사전 정의된 프로바이더가 다수 포함되어 있습니다.필요에 따라서 독자적인 프로바이더를 작성할 수도 있습니다.
JAX-RS 사양은 이러한 다양한 프로바이더의 유형과 그 기능에 대해 자세히 알아보기 위한 좋은 참고 자료입니다(4장 참조).
@Provider 주석은 MessageBodyReader 및 MessageBodyWriter 등 JAX-RS 런타임에 필요한 모든 항목에 사용됩니다.HTTP 요청의 경우 MessageBodyReader를 사용하여 HTTP 요청 엔티티 본문을 메서드 파라미터에 매핑합니다.응답측에서는 반환값이 MessageBodyWriter를 사용하여 HTTP 응답 엔티티 본문에 매핑됩니다.응용 프로그램이 HTTP 헤더 또는 다른 상태 코드 등의 추가 메타데이터를 제공해야 하는 경우 메서드는 엔티티를 랩하고 응답을 사용하여 구축할 수 있는 응답을 반환할 수 있습니다.Response Builder.
@Provider annotation을 사용하면 착신 및 발신 메시지를 원시 XML 수준에서 검사할 수 있습니다.이러한 방법으로 Provider는 클라이언트의 Dispatch에 대응합니다.
Filtering-Request/Response, Exception Handling 등의 특정 액티비티를 실행하기 위해 JAX-RS에는 기본 구현 로직이 있습니다.다만, 유저가 독자적인 실장을 제공할 수도 있습니다.
독자적인 실장을 실시하려면 , 적절한 클래스를 @Provider 주석으로 지정해 실장할 필요가 있습니다.
JAX-RS는 @Provider 주석을 검색하여 이러한 사용자 정의 구현의 존재를 확인합니다.
예를 들어 다음과 같습니다.
...
@Provider
public class AppExceptionMapper implements ExceptionMapper<Throwable> {
...
...
@Provider
@PreMatching
public class RESTRequestResponseFilter implements ContainerRequestFilter, ContainerResponseFilter {
...
언급URL : https://stackoverflow.com/questions/13557442/what-does-provider-in-jax-rs-mean
'itsource' 카테고리의 다른 글
uint8_t와 부호 없는 문자 (0) | 2022.09.03 |
---|---|
Java에서 유효한 URL을 확인하려면 어떻게 해야 합니까? (0) | 2022.09.03 |
JSP를 사용하여 URL에서 파라미터를 취득하는 방법 (0) | 2022.09.03 |
변수 이름에 댓글을 달 수 있나요? (0) | 2022.09.03 |
Vue.js[vuex] 변환에서 디스패치하는 방법 (0) | 2022.09.03 |