[SPRING] 스프링 주석 기반 구성을 사용하는 동안 MappingJacksonHttpMessageConverter를 구성하는 방법은 무엇입니까?
SPRING스프링 주석 기반 구성을 사용하는 동안 MappingJacksonHttpMessageConverter를 구성하는 방법은 무엇입니까?
필자는 순수 xml beans가 아닌 annotation을 통해 spring beans를 설정하기에 불합리한 결과를 보았습니다.
REST 채널을 사용하여 구성
<mvc:annotation-driven />
이제 null이 아닌 값을 가진 필드 만 JSON으로 출력하도록 MappingJacksonHttpMessageConverter를 구성하기 만하면됩니다. 나는 다음을 시도했다.
<bean id="jsonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="prefixJson" value="false" />
<property name="supportedMediaTypes" value="application/json" />
<property name="objectMapper">
<bean class="org.codehaus.jackson.map.ObjectMapper">
<property name="serializationInclusion" value="NON_NULL"/>
</bean>
</property>
</bean>
빈이 생성되지만 변환기의 다른 인스턴스가 만들어 져서 채널에 사용됩니다. 그래서 @ Stackingflow 질문에 설명 된 @Configuration 및 @Bean 길을 시도했지만 여전히 json serialization 자체 구성을 사용합니다.
마지막으로 매퍼를 통해 삽입하려고했습니다.
@Autowired
private MappingJacksonHttpMessageConverter jacksonConverter;
하지만 NoSuchBeanDefinitionException으로 끝났습니다. 이제는 옵션이 없으므로 여기에 아이디어가 필요합니다. 프레임 워크에서 사용하는 맵퍼를 제어하고 구성하는 방법은 무엇입니까?
해결법
-
==============================
1.WebMvcConfigurer.configureMessageConverters () 메소드를 사용하십시오.
WebMvcConfigurer.configureMessageConverters () 메소드를 사용하십시오.
@Configuration을 사용하면 다음과 같은 이점을 얻을 수 있습니다.
@Configuration class MvcConf extends WebMvcConfigurationSupport { protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(converter()); addDefaultHttpMessageConverters(converters); } @Bean MappingJacksonHttpMessageConverter converter() { MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter() //do your customizations here... return converter; } }
사용자 지정 변환기를 사용할 때 기본값이 적용되지 않으므로 addDefaultHttpMessageConverters () 호출이 필요합니다.
중요 참고 WebMvcConfigurationSupport를 확장하는 경우 변환기를 구성하려면 @EnableWebMvc를 제거해야합니다.
-
==============================
2.자바 코드에서만 스프링 mvc 서블릿 설정을 커스터마이징하는 것은 여러 가지 방법으로 수행 할 수 있습니다.
자바 코드에서만 스프링 mvc 서블릿 설정을 커스터마이징하는 것은 여러 가지 방법으로 수행 할 수 있습니다.
가장 간단한 방법은 WebMvcConfigurerAdapter를 사용하여 @Configuration 주석이 달린 클래스를 확장하는 것 같습니다.
@Configuration @EnableWebMvc public class ApplicationSpringConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters( List<HttpMessageConverter<?>> converters ) { converters.add(converter()); } @Bean MappingJackson2HttpMessageConverter converter() { // [...] } }
이것은 Tomasz Nurkiewicz의 답변에서 제공되는 예제와 매우 흡사합니다.
그러나 WebMvcConfigurerAdapter 대신 WebMvcConfigurationSupport를 사용하면 고급 사용자 지정에 더 적합합니다. 기본 변환기를 추가해야하는 경우에도 마찬가지입니다.
Spring 문서를 참조하십시오. 제공된 구성 사용자 정의하기
from https://stackoverflow.com/questions/10650196/how-to-configure-mappingjacksonhttpmessageconverter-while-using-spring-annotatio by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트 : EmbeddedServletContainerFactory 빈이 없어서 EmbeddedWebApplicationContext를 시작할 수 없습니다. (0) | 2018.12.09 |
---|---|
[SPRING] 스프링 부트의 필터 순서 (0) | 2018.12.09 |
[SPRING] Spring과 Hibernate를 사용하여 여러 데이터베이스에서 분산 트랜잭션을 수행하는 '최선의'방법은 무엇입니까? (0) | 2018.12.09 |
[SPRING] Spring 부팅 속성 파일에서 암호를 숨기는 방법 (0) | 2018.12.09 |
[SPRING] 모든 요청을 처리하지만 정적 컨텐츠 디렉토리를 제외하도록 SpringMVC를 구성 할 수 있습니까? (0) | 2018.12.09 |