spring boot有很多场景的编码转换
常件的也就2种
有专门处理配置文件中参数的编码
有专门处理http数据通讯的参数编码
本来以前通过实现boot的这个类WebMvcConfigurerAdapter来处理不同场景下的编码转换问题。如下
/**
* 中文乱码解决
*/
@Configuration
public class CharsetConfig extends WebMvcConfigurerAdapter {
@Bean
public HttpMessageConverter<String> responseBodyConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
return converter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(responseBodyConverter());
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
而现在WebMvcConfigurerAdapter 类已经被保护起来了,后期版本估计要作废掉取而代之的是另一个类,是对他的扩展和优化就是WebMvcConfigurationSupport类。我强烈推荐这个编码转换服务,也是需要实现它的方法,如下
/**
* 中文乱码解决
*/
@Configuration
public class CharsetConfig extends WebMvcConfigurationSupport {
//http请求时编码
@Bean
public HttpMessageConverter<String> responseBodyConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
return converter;
}
/**
* 系统配置参数编码
* @param converters
*/
@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(responseBodyConverter());
}
}
///以上这两个编码转换方法都是在服务启动之时就加载进入spring容器。
网友评论