1. 程式人生 > >改變返回值

改變返回值

import org.slf4j.Logger;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.util.StreamUtils;


import java.io.IOException;
import java.lang.reflect.Type;
import java.nio.charset.Charset;


import static org.slf4j.LoggerFactory.getLogger;


/**
 * Created by userwyh on 2017/3/4.
 */
public class MappingJackson2HttpMessageConverterFactory {
    private static final Logger logger = getLogger(MappingJackson2HttpMessageConverterFactory.class);
    public MappingJackson2HttpMessageConverter init() {
        return new MappingJackson2HttpMessageConverter(){
            /**
             * 重寫Jackson訊息轉換器的writeInternal方法
             * SpringMVC選定了具體的訊息轉換型別後,會呼叫具體型別的write方法,將Java物件轉換後寫入返回內容
             */
            @Override
            protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
               
                    logger.info("返回值不是String型別,還是使用之前選擇的轉換器進行訊息轉換");
                    super.writeInternal(object, type, outputMessage);
               
            }
           
        };
    }
}