구현하기 전에 더 많은 정보를 얻고 다른 솔루션을 시도하고 싶습니다.Nestled 스트림을 사용한 스트리밍 REST 응답
구현중인 REST 서비스는 여러 필드의 이진 데이터와 간단한 문자열을 포함하는 모델을 제공합니다. 쉬운 방법은 String, byte [] 필드 등을 포함하는 POJOS를 구현하는 것입니다. Jackson은 base64를 사용하여 저를 serialize합니다. 케이크 한 조각.
하지만이 서비스는 스트림으로 제공하고 싶습니다. 바이너리 필드는 상당히 거대하며 이미 내 서비스 내의 다른 외부 리소스에서 수신되는 스트림으로 처리됩니다. 따라서 그들을 바이트 배열로 읽은 다음 jackson이 base64로 변환하도록 허용하면 성능이 저하 될 수 있습니다.
아마도 내 POJO 내에 OutputStream 객체를 가질 수 있습니다. 잭슨이 스트림을 통해 (base64로 인코딩하는 동안) 아니면 전체 스트림을 먼저 읽을 것입니까? 아마 잭슨이 이걸 전혀 지원하지 않을거야?
또 다른 옵션으로 여러 부분 응답을 사용할 수도 있지만 저지가 모든 부분을 버퍼링하지 않을지는 확실하지 않습니까?
아니면 사용자 지정 잭슨 시리얼 라이저를 사용하는 것이 유일한 방법입니까? 이것을 수행하기 위해 StreamingOutput을 사용할 수 있습니까?
방금 하나의 BLOB 인 경우 옥텟 스트림으로 반환하고 행복 하겠지만 언급 한대로 여러 바이너리 및 비 바이너리 필드가있는 데이터 모델이 있으며 실제로 모든 것을 반환하고자합니다. 전화 한 통.
그래서 뭐라고 말합니까? 내 목표를 달성하는 가장 쉬운 방법은 무엇입니까?