Я пытаюсь маршалировать Multipartfile, но получаю ниже
com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: java.io.FileInputStream["fd"]->java.io.FileDescriptor["parent"]->java.io.FileInputStream["fd"]->java.io.FileDescriptor["parent"]->java.io.FileInputStream["fd"]->java.io.FileDescriptor["parent"]->java.io.FileInputStream["fd"]->java.io.FileDescriptor["parent"]->java.io.FileInputStream["fd"]->java.io.FileDescriptor["parent"]->java.io.FileInputStream["fd"]->java.io
Я пытался найти способы синхронизации Multipartfile или конвертировать Multipartfile в CommonsMultipartFile, но всегда сталкивался с проблемами, я использую SpringBoot 2.1.2,Ниже мой код
Контроллер:
@PostMapping(path = "/upload")
public ResponseEntity<Void> save(@RequestPart("document") CommonsMultipartFile multipartfile, @RequestPart("userDTO") UserDTO userDTO) {
fileService.save(multipartfile, userDTO);
return new ResponseEntity<>(HttpStatus.CREATED);
}
Служба:
public void jacksonDataFormat(UserDTO userDTO) {
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
objectMapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
objectMapper.writeValueAsString(userDTO);
} catch (Exception e) {
System.out.println(e);
}
}
public void save(MultipartFile multipartfile, UserDTO userDTO) {
userDTO.setDocument(multipartfile);
jacksonDataFormat(userDTO);
publisher.publishEvent(new CreateEvent(saveDocumentDTO));
}
Ниже приведен код, который вызывает исключение JsonMappingException:
objectMapper.writeValueAsString(userDTO);
Я благодарен за любую помощь в этом