Restful Data Services를 구축하는 과정에서 컨트롤러와 리포지토리를 정의하고 일부 주석으로 수정했지만 지금까지 객체 변환을 수행하지 않았습니다. Java 엔티티 객체를 HTTP 데이터 출력 스트림으로 변환했습니다. Spring Boot의 기본 레이어는 httpmessageconverters를 사용하여 Jackson 라이브러리에 의존하여 Java Entity 클래스를 JSON 형식으로 출력합니다. 여러 변환기를 사용할 수 있으면 메시지 개체 유형 및 필요한 컨텐츠 유형에 따라 사용할 가장 적합한 변환기를 선택하십시오.
SpringMVC 소스 코드 분석 인 HttpMessageConverter 기사에는 메시지 변환기의 위치를 명확하게 나타내는 다이어그램이 있습니다.
메시지 변환기의 위치
메시지 변환기의 목표는 다음과 같습니다. HTTP 입력 요청 형식을 Java 개체로 변환합니다. Java 개체를 HTTP 출력 요청으로 변환합니다. 일부 메시지 변환기는 여러 데이터 유형 만 지원하고 일부는 여러 출력 형식을 지원하며 일부는 둘 다를 제공합니다. 예를 들면 : Mapping Jackson2HttpMessAgeConverter는 Java 객체를 Application/JSON으로 변환 할 수 있으며, protobufhttpmessageConverter는 com.google.protobuf.message의 입력 만 지원하지만 Application/JSON, Application/XML, Text/Plain 및 Application/X-Protobuf를 출력 할 수 있습니다.
어떻게
프로젝트에서 메시지 변환기를 구성하는 세 가지 방법이 있습니다. 주요 차이점은 사용자 정의 성과 사용 편의성 측정입니다.
webConfiguration 클래스에 @Bean 정의를 추가하십시오
@BeanPublic bytearrayhttpmessageconverter bytearrayhttpmessageconverter () {return new bytearrayhttpmessageconverter ();}} ConfigureMessAgeConverters 메서드를 대체하여 기존 메시지 변환기 링크 목록을 확장하십시오.
@overridepublic void configuremessageconverters (list <httpmessageconverter <?> converters) {converters.add (new bytearrayhttpmessageconverter ());} 자세한 내용은 ExtendMessageConverters 메소드를 다시 작성하고 먼저 변환기 목록을 지우고 사용자 정의 변환기를 추가 할 수 있습니다.
@overridepublic void ExtendMessageConverters (list <httpmessageconverter <?> converters) {converters.clear (); convers.add (new bytearrayhttpmessageconverter ());}분석
Spring은 동일한 작업을 수행하는 여러 가지 방법을 제공하며 선택한 작업은 편의성 또는 사용자 정의 가능성에 더 집중하는지 여부에 따라 다릅니다.
위에서 언급 한 세 가지 방법의 차이점은 무엇입니까?
@bean을 통해 httpmessageconverter 정의는 위에서 언급 한 서블릿 필터의 추가와 유사하게 프로젝트에 메시지 변환기를 추가하는 가장 쉬운 방법입니다. 스프링이 httpmessageconverter 유형의 콩으로 스캔하면 통화 체인에 자동으로 추가됩니다. WebMvcConfigurerAdapter의 프로젝트에서 웹 구성을 상속하는 것이 좋습니다.
ConfigureMessAgeConverters 메서드를 다시 작성하여 사용자 정의 변환기를 추가하는 것이 편리하지만 약점이 있습니다. 프로젝트에 여러 개의 WebMVCConfigurers 인스턴스가있는 경우 (기본적으로 스프링 부팅에 의해 스프링 부팅으로 제공되는 경우) 구성이 고정 순서로 재 작성되는 것은 보장되지 않습니다.
더 많은 세분화 제어가 필요한 경우 : 다른 메시지 변환기 또는 명확하게 중복 변환기를 지우려면 ExtendMessAgeConverters를 다시 작성하여 수행 할 수 있으며 다른 WebMVCConfigurer 인스턴스 도이 방법을 다시 작성할 수 있지만 기회는 매우 작습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.