47.3. 매개변수 변환기
47.3.1. 개요 링크 복사링크가 클립보드에 복사되었습니다!
매개 변수 변환기를 사용하면 모든 유형의 필드, 빈 속성 또는 리소스 메서드 인수에 매개변수( 문자열
유형)를 삽입할 수 있습니다. 적절한 매개 변수 변환기를 구현하고 바인딩하여 매개 변수 String 값을 대상 유형으로 변환할 수 있도록 JAX-RS 런타임을 확장할 수 있습니다.
47.3.2. 자동 변환 링크 복사링크가 클립보드에 복사되었습니다!
매개변수는 String
의 인스턴스로 수신되므로 항상 String
유형의 필드, 빈 속성 및 메서드 매개변수에 직접 삽입할 수 있습니다. 또한 JAX-RS 런타임에는 매개 변수 문자열을 다음 유형으로 자동 변환하는 기능이 있습니다.
- 기본 유형.
-
단일 String 인수를 수락하는 생성자가 있는 형식입니다.Types that have a constructor that accepts a single
String
argument. -
형식의 인스턴스를 반환하는 단일 String 인수가 있는
valueOf
또는fromString
이라는 정적 메서드가 있는 Type입니다.Types that have a static method named valueOf or fromString with a single String argument that returns an instance of the type. -
List<T
> ,Set<T
> , 또는SortedSet
<T
>, T 가 2 또는 3에 설명된 유형 중 하나인 경우.
47.3.3. 매개 변수 변환기 링크 복사링크가 클립보드에 복사되었습니다!
자동 변환에서 다루지 않는 형식에 매개 변수를 삽입하려면 해당 형식에 대한 사용자 지정 매개 변수 변환기를 정의할 수 있습니다.In order to inject a parameter into a type not covered by automatic conversion, you can define a custom parameter converter for the type. 매개 변수 변환기는 String에서 사용자 지정 형식으로 변환 정의 및 사용자 지정 형식에서 String으로의 변환을 정의할 수 있는 JAX-RS 확장입니다.A parameter converter is a JAX-RS extension that enables you to define conversion from String
to a custom type, and also in the reverse direction, from the custom type to a String
.
47.3.4. 팩토리 패턴 링크 복사링크가 클립보드에 복사되었습니다!
JAX-RS 매개 변수 변환기 메커니즘은 팩토리 패턴을 사용합니다. 따라서 매개 변수 변환기를 직접 등록하는 대신 요청 시 매개 변수 변환기(type, javax.ws.rs.ext.ParamConverterProvider
)를 만드는 매개 변수 변환기(type, javax.ws.rs.ext.ParamConverter
)를 생성해야 합니다.
47.3.5. ParamConverter 인터페이스 링크 복사링크가 클립보드에 복사되었습니다!
javax.ws.rs.ext.ParamConverter
인터페이스는 다음과 같이 정의됩니다.
자체 ParamConverter
클래스를 구현하려면 fromString
메서드를 재정의하여 매개 변수 문자열을 대상 유형으로 변환하고 대상 유형을 문자열로 다시 변환 해야
합니다.
47.3.6. ParamConverterProvider 인터페이스 링크 복사링크가 클립보드에 복사되었습니다!
javax.ws.rs.ext.ParamConverterProvider
인터페이스는 다음과 같이 정의됩니다.
자체 ParamConverterProvider
클래스를 구현하려면 이 인터페이스를 구현해야 합니다. 이 인터페이스는 ParamConverter
인스턴스를 생성하는 팩토리 메서드인 getConverter
메서드를 재정의해야 합니다.
47.3.7. 매개 변수 변환기 공급자 바인딩 링크 복사링크가 클립보드에 복사되었습니다!
매개 변수 변환기 공급자를 JAX-RS 런타임(애플리케이션에서 사용할 수 있도록 하는)에 바인딩 하려면 다음과 같이 구현 클래스에 @Provider
주석을 추가해야 합니다.
이 주석은 배포 단계에서 매개변수 변환기 공급자가 자동으로 등록되도록 합니다.
47.3.8. 예제 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 매개 변수 문자열을 TargetType
형식으로 변환
하거나 변환할 수 있는 기능이 있는 ParamConverter
및 ParamConverter를 구현하는 방법을 보여줍니다.
47.3.9. 매개 변수 변환기 사용 링크 복사링크가 클립보드에 복사되었습니다!
이제 TargetType에 대한 매개변수 변환기를 정의했으므로 다음과 같이
필드 및 인수에 직접 매개변수를 삽입할 수 있습니다.
TargetType
47.3.10. 기본값의 지연 변환 링크 복사링크가 클립보드에 복사되었습니다!
매개변수의 기본값( @DefaultValue
주석을 사용하여) 기본값을 지정하는 경우 기본값을 바로 대상 유형(기본 동작)으로 변환하거나 필요한 경우에만 기본값을 변환해야 하는지(lazy 변환)할지 여부를 선택할 수 있습니다. 지연 변환을 선택하려면 대상 유형에 @ParamConverter.Lazy
주석을 추가합니다. 예를 들면 다음과 같습니다.