Ограничить доступ к сборкам с использованием групп

В дополнение к нескольким ответам здесь несколько указателей (Spring 4.1).

Если у вас нет каких-либо messageconverters, настроенных в вашем WebMvcConfig, если ResponseEntity внутри вашего @ResponseBody работает хорошо .

Если вы это сделаете, то есть у вас есть MappingJackson2HttpMessageConverter, настроенный (например, я), используя ResponseEntity, возвращает org.springframework.http.converter.HttpMessageNotWritableException.

Единственным рабочим решением в этом случае является для обертывания byte[] в @ResponseBody следующим образом:

@RequestMapping(value = "/get/image/{id}", method=RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE)
public @ResponseBody byte[] showImageOnId(@PathVariable("id") String id) {
    byte[] b = whatEverMethodUsedToObtainBytes(id);
    return b;
}

В этом случае нужно правильно настроить messageconverters (и добавить ByteArrayHttpMessageConverer) в свой WebMvcConfig, например:

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(mappingJackson2HttpMessageConverter());
    converters.add(byteArrayHttpMessageConverter());
}

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    converter.setObjectMapper(objectMapper);
    return converter;
}

@Bean
public ByteArrayHttpMessageConverter byteArrayHttpMessageConverter() {
    ByteArrayHttpMessageConverter arrayHttpMessageConverter = new ByteArrayHttpMessageConverter();
    arrayHttpMessageConverter.setSupportedMediaTypes(getSupportedMediaTypes());
    return arrayHttpMessageConverter;
}

private List<MediaType> getSupportedMediaTypes() {
    List<MediaType> list = new ArrayList<MediaType>();
    list.add(MediaType.IMAGE_JPEG);
    list.add(MediaType.IMAGE_PNG);
    list.add(MediaType.APPLICATION_OCTET_STREAM);
    return list;
}
0
задан agy 28 February 2019 в 19:11
поделиться

0 ответов