2.33. Jackson
JSON으로의 Marshal ScanSettings 및 Jackson을 사용한
2.33.1. 내부 내용 링크 복사링크가 클립보드에 복사되었습니다!
사용 및 설정 세부 사항은 위의 링크를 참조하십시오.
2.33.2. Maven 조정 링크 복사링크가 클립보드에 복사되었습니다!
code.quarkus.redhat.com에서 이 확장 기능을 사용하여 새 프로젝트를 생성합니다.
또는 기존 프로젝트에 좌표를 추가합니다.
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jackson</artifactId>
</dependency>
2.33.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
2.33.3.1. Jackson ObjectMapper구성 링크 복사링크가 클립보드에 복사되었습니다!
jacksonDataFormat 에서 사용하는 ObjectMapper 를 구성하는 몇 가지 방법이 있습니다. 이러한 내용은 아래에 설명되어 있습니다.
2.33.3.1.1. ObjectMapper 는 JacksonDataFormat에 의해 내부적으로 생성 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 JacksonDataFormat 은 자체 ObjectMapper 를 만들고 DataFormat 에 다양한 구성 옵션을 사용하여 추가 Jackson 모듈을 구성합니다.
2.33.3.1.2. Custom ObjectMapper for JacksonDataFormat 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 사용자 정의 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)
}
}
2.33.3.1.3. jackson DataFormat에서 Quarkus Jackson ObjectMapper 사용 링크 복사링크가 클립보드에 복사되었습니다!
Quarkus Jackson 확장에서는 JacksonDataFormat 에서 검색할 수 있는 ObjectMapper CDI 빈을 노출합니다.
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)
}
}