1. 设置依赖
2. 写个配置类
3. 设置实体类字段的数据格式
(1)时间
(2)中文编码
4. 自行配置业务层、持久层
5. 编写控制器
6. 访问
排除SpringBoot默认的json依赖,用阿里的fastjson
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </exclusion> </exclusions> </dependency> <!-- 配置fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.70</version> </dependency>ps:有人写在启动器类,不推荐,别污染。
@Configuration让SpringBoot自动加载类内的配置。因为WebMvcConfigurerAdapter过期,所以直接实现接口WebMvcConfigurer。该接口为SpringBoot处理用户自行添加的配置,除了视图过滤,还有拦截器、过滤器等配置也可在该接口配置。
/** * 关于FastJson的配置 * * @author ZRH * @version 1.0.0 * @date 2020/9/3 */ @Configuration public class FastJsonConfiguration implements WebMvcConfigurer { /** * 自定义消息转换器 * * @param converters 消息转换器列表 */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // 1、定义一个convert转换消息的对象 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 2、添加fastjson的配置信息 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( DisableCircularReferenceDetect , WriteMapNullValue , WriteNullBooleanAsFalse); // 3、在convert中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); // 4、将convert添加到converters中 converters.add(fastConverter); } }其中,序列化特性有:
WriteNullListAsEmpty
List字段如果为null,输出为[],而非nullWriteNullStringAsEmpty字符类型字段如果为null,输出为"",而非nullDisableCircularReferenceDetect消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环)WriteNullBooleanAsFalseBoolean字段如果为null,输出为false,而非nullWriteMapNullValue是否输出值为null的字段,默认为false
有人在配置类里用,不过存在过期字段,不推荐:
List<MediaType> fastMediaTypes = new ArrayList<>(); fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); fastConverter.setSupportedMediaTypes(fastMediaTypes); fastConverter.setFastJsonConfig(fastJsonConfig); converters.add(fastConverter);
我这里直接在全局配置文件application.yml配置编码:
server: port: 8080 servlet: encoding: force: true