@RequestParam的弹簧转换器

时间:2014-03-19 20:30:59

标签: java spring spring-boot

我想在我的Controller中使用表单字段的InputStream,而@RequestParam是String或MultipartFile。有谁知道如何正确注册转换器。我想要的东西看起来像这样

@RequestMapping(value = "/test", method = RequestMethod.POST)
void sendData(@RequestParam("data") InputStream){
   // Deal with InputStream
}

我写了两个转换器,但我不确定如何在spring boot中注册它们并强制它们工作:

public class StringToStreamConverter implements Converter<String, InputStream> {

   @Override
   public InputStream convert(String source) {
     return new ByteArrayInputStream(source.getBytes());
   }
}


public class MultipartFileToStreamConverter 
   implements Converter<MultipartFile, InputStream> {

   @Override
   public InputStream convert(MultipartFile source) {
     return source.getInputStream();
   }
}

1 个答案:

答案 0 :(得分:1)

我找到了一些解决方案。

如果配置类扩展WebMvcConfigurationSupport我可以覆盖方法public FormattingConversionService mvcConversionService(),我可以在其中添加我的转换器,它只是有效。

@Configuration
public class TestConfig extends WebMvcConfigurationSupport {
   @Override
   public FormattingConversionService mvcConversionService() {
       FormattingConversionService f = super.mvcConversionService();
       f.addConverter(new StringToStreamConverter());
       f.addConverter(new MultipartFileToStreamConverter());
       return f;
   }
}

我想知道是否有人有更好的解决方案。