编写HttpMessageConverter实现类(核心处理逻辑)
public class PropertiesHttpMessageConverter extends AbstractGenericHttpMessageConverter<Properties> {
public PropertiesHttpMessageConverter(){
super(new MediaType("text", "properties"));
}
@Override
protected void writeInternal(Properties properties, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
OutputStream body = outputMessage.getBody();
Charset charset = this.getCharset(outputMessage) ;
Writer writer = new OutputStreamWriter(body,charset) ;
properties.store(writer,"form PropertiesHttpMessageConverter");
}
@Override
protected Properties readInternal(Class<? extends Properties> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
InputStream body = inputMessage.getBody();
Properties properties = new Properties() ;
Charset charset = getCharset(inputMessage) ;
InputStreamReader reader = new InputStreamReader(body, charset) ;
properties.load(reader);
return properties;
}
private Charset getCharset(HttpMessage inputMessage){
HttpHeaders headers = inputMessage.getHeaders();
MediaType contentType = headers.getContentType();
Charset charset = contentType.getCharset();
charset = charset == null ? Charset.forName("UTF-8") : charset ;
return charset ;
}
@Override
public Properties read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
return readInternal(null, inputMessage);
}
}