34.3. 붙박임 유형
34.3.1. 개요
이 섹션에서는 마스터 유형 변환기에서 지원하는 변환에 대해 설명합니다. 이러한 변환은 Apache Camel 코어에 빌드됩니다.
일반적으로 유형 변환기는 Message.getBody(Class<T> 유형) 또는
과 같은 편의성 함수를 통해 호출됩니다. 마스터 유형 변환기를 직접 호출할 수도 있습니다. 예를 들어 교환 오브젝트인 Message.getHeader(String name, Class<T
> 유형)exchange
가 있는 경우 예 34.4. “값을 문자열로 변환” 에 표시된 대로 지정된 값을 String
으로 변환할 수 있습니다.
예 34.4. 값을 문자열로 변환
org.apache.camel.TypeConverter tc = exchange.getContext().getTypeConverter(); String str_value = tc.convertTo(String.class, value);
34.3.2. 기본 유형 변환기
Apache Camel은 다음 기본 유형으로의 변환을 수행하는 기본 제공 유형 변환기를 제공합니다.
-
java.io.File
-
문자열
-
byte[]
andjava.nio.ByteBuffer
-
java.io.InputStream
andjava.io.OutputStream
-
java.io. Cryo
stat 및java.io.Writer
-
java.io.BufferedReader
andjava.io.BufferedWriter
-
java.io.StringReader
그러나 이러한 유형의 모든 유형이 상호 작용 가능한 것은 아닙니다. 기본 제공 변환기는 주로 파일
및 문자열
유형에서 변환을 제공하는 데 중점을 둡니다. File
유형은 Reader
,Writer
, String
Cryostat를 제외한 모든 이전 유형으로 변환할 수 있습니다. String
유형은 File
,byte[]
, Cryostat Buffer ,
또는 Input
StreamString Cryostat로 변환할 수 있습니다
. 문자열
을 파일 이름으로 해석하여 문자열을 File
으로 변환합니다. 문자열
,byte[]
및 Cryostat Buffer
의 trio는 완전히 상호 호환 가능합니다.
현재 교환에서 Exchange.CHARSET_NAME
교환 속성을 설정하여 바이트[]
에서 문자열로, 그리고
에서 String
byte[]
로 변환하는 데 사용할 문자 인코딩을 명시적으로 지정할 수 있습니다. 예를 들어 UTF-8 문자 인코딩을 사용하여 변환을 수행하려면 exchange.setProperty("Exchange.CHARSET_NAME", "UTF-8")
를 호출합니다. 지원되는 문자 세트는 java.nio.charset.Charset
클래스에 설명되어 있습니다.
34.3.3. 컬렉션 유형 변환기
Apache Camel은 다음 컬렉션 유형으로의 변환을 수행하는 기본 제공 유형 변환기를 제공합니다.
-
Object[]
-
java.util.Set
-
java.util.List
이전 컬렉션 유형 간의 모든 변환이 지원됩니다.
34.3.4. 매핑 유형 변환기
Apache Camel은 다음 맵 유형으로의 변환을 수행하는 기본 제공 유형 변환기를 제공합니다.
-
java.util.Map
-
java.util.HashMap
-
java.util.Hashtable
-
java.util.Properties
이전 맵 유형도 java.util.Set
유형의 세트로 변환할 수 있습니다. 여기서 set 요소는 MapEntry<K,V
> 유형입니다.
34.3.5. Cryostat 유형 컨버터
다음과 같은 Document Object Model(DOM) 유형으로 형식 변환을 수행할 수 있습니다.
-
org.w3c.dom.Document
kafka- Cryostat-Enginevertible frombyte[]
,string
,java.io.File
, andjava.io.InputStream
. -
org.w3c.dom.Node
-
문자열
에서javax.xml.transform.dom.DOMSource
Cryostat-ECDHEvertible. -
byte[]
및문자열
에서javax.xml.transform.Source
Cryostat-ECDHEconvertible.
이전 192.0.2. 유형 간의 모든 변환이 지원됩니다.
34.3.6. SAX 유형 변환기
SAX 이벤트 기반 XML 구문 분석을 지원하는 javax.xml.transform.sax.SAXSource
유형으로 변환을 수행할 수도 있습니다(자세한 내용은 SAX 웹 사이트 참조). 다음 유형에서 SAXSource
로 변환할 수 있습니다.
-
문자열
-
InputStream
-
소스
-
StreamSource
-
CryostatSource
34.3.7. enum 유형 변환기
Camel은 형식을 열거
하기 위해 문자열
을 수행하기 위한 형식 변환기를 제공합니다. 여기서 문자열 값은 지정된 열거 클래스에서 일치하는 enum
상수로 변환됩니다(정합은 대소문자를 구분하지 않음). 이 유형 변환기는 메시지 본문을 변환하는 데 거의 필요하지 않지만 Apache Camel에서 특정 옵션을 선택하는 데 자주 사용됩니다.
예를 들어 로깅 수준 옵션을 설정할 때 다음 값인 INFO
는 enum
상수로 변환됩니다.
<to uri="log:foo?level=INFO"/>
enum
형식 변환기는 대소문자를 구분하지 않으므로 다음 대안도 작동합니다.Because the enum type converter is case-insensitive, any of the following alternatives would also work:
<to uri="log:foo?level=info"/> <to uri="log:foo?level=INfo"/> <to uri="log:foo?level=InFo"/>
34.3.8. 사용자 정의 유형 변환기
Apache Camel을 사용하면 사용자 정의 유형 변환기를 구현할 수 있습니다. 사용자 정의 유형 변환기를 구현하는 방법에 대한 자세한 내용은 36장. 유형 전환 을 참조하십시오.