33.3. 사용법
33.3.1. jackson ObjectMapper구성 링크 복사링크가 클립보드에 복사되었습니다!
jacksonDataFormat 에서 사용하는 ObjectMapper 를 구성하는 몇 가지 방법이 있습니다. 이러한 내용은 아래에 설명되어 있습니다.
33.3.1.1. jacksonDataFormat에 의해 내부적으로 생성된 ObjectMapper 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 jacksonDataFormat 은 자체 ObjectMapper 를 만들고 DataFormat 에 다양한 구성 옵션을 사용하여 추가 Jackson 모듈, 상당히 인쇄 및 기타 기능을 구성합니다.
33.3.1.2. jacksonDataFormat의 사용자 정의 ObjectMapper 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 사용자 지정 ObjectMapper 인스턴스를 jacksonDataFormat 에 전달할 수 있습니다.
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;
public class Routes extends RouteBuilder {
public void configure() {
ObjectMapper mapper = new ObjectMapper();
JacksonDataFormat dataFormat = new JacksonDataFormat();
dataFormat.setObjectMapper(mapper);
// Use the dataFormat instance in a route definition
from("direct:my-direct").marshal(dataFormat)
}
}
33.3.1.3. jackson DataFormat과 함께 Quarkus jackson ObjectMapper 사용 링크 복사링크가 클립보드에 복사되었습니다!
Quarkus Jackson 확장에서는 jackson DataFormat 에서 검색할 수 있는 ObjectMapper CDI pin을 노출합니다.
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;
public class Routes extends RouteBuilder {
public void configure() {
JacksonDataFormat dataFormat = new JacksonDataFormat();
// Make JacksonDataFormat discover the Quarkus Jackson `ObjectMapper` from the Camel registry
dataFormat.setAutoDiscoverObjectMapper(true);
// Use the dataFormat instance in a route definition
from("direct:my-direct").marshal(dataFormat)
}
}
Camel REST DSL에서 JSON 바인딩 모드를 사용하고 Quarkus Jackson ObjectMapper 를 사용하려는 경우 다음과 같이 수행할 수 있습니다.
import org.apache.camel.builder.RouteBuilder;
@ApplicationScoped
public class Routes extends RouteBuilder {
public void configure() {
restConfiguration().dataFormatProperty("autoDiscoverObjectMapper", "true");
// REST definition follows...
}
}
ObjectMapperCustomizer 를 사용하여 Quarkus ObjectMapper 에서 사용자 지정을 수행할 수 있습니다.
import com.fasterxml.jackson.databind.ObjectMapper;
import io.quarkus.jackson.ObjectMapperCustomizer;
@Singleton
public class RegisterCustomModuleCustomizer implements ObjectMapperCustomizer {
public void customize(ObjectMapper mapper) {
mapper.registerModule(new CustomModule());
}
}
또한 @Inject the Quarkus ObjectMapper 를 사용하여 jacksonDataFormat 에 전달할 수 있습니다.
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;
@ApplicationScoped
public class Routes extends RouteBuilder {
@Inject
ObjectMapper mapper;
public void configure() {
JacksonDataFormat dataFormat = new JacksonDataFormat();
dataFormat.setObjectMapper(mapper);
// Use the dataFormat instance in a route definition
from("direct:my-direct").marshal(dataFormat)
}
}