前面一篇SpringBoot学习-(1)第一个小例子
作为springboot的helloworld介绍了springboot的基本配置和使用效果(如果没有接触过springboot的小伙伴看到该篇博文,建议从第一篇开始跟着笔者一起学习,后面的)。
springboot可以直接将对象解析为json格式并返回数据。springboot使用了jackson作为json解析器。
alibaba开源的FastJson是一个被广泛使用的json解析器,所以很多人习惯用FastJson,而不是jackson,那么又想使用springboot怎么办呢?
1.添加FastJson依赖包
<!-- 添加fastjson依赖包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
2.配置基本信息
UserInfo
这里使用FastJson的@JSONField(format=”yyyy-MM-dd HH:mm”)对Date类型进行格式话。
package com.tang.bean;
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
public class UserInfo {
private Integer id;
private String userName;
private String loginName;
private String password;
private Integer age;
@JSONField(format="yyyy-MM-dd HH:mm")
private Date birthDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", userName=" + userName + ", loginName="
+ loginName + ", password=" + password + ", age=" + age
+ ", birthDate=" + birthDate + "]";
}
}
UserInfoController
package com.tang.controller;
import java.util.Date;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.tang.bean.UserInfo;
/**
* 这里的@RestController相当于@Controller+@ResponseBody
* @author Tang
*/
@RestController
public class UserInfoController {
@RequestMapping("/getUser")
public UserInfo getUserInfo(){
UserInfo userInfo = new UserInfo();
userInfo.setId(1);
userInfo.setUserName("张三");
userInfo.setLoginName("zhangsan");
userInfo.setPassword("123456");
userInfo.setAge(12);
userInfo.setBirthDate(new Date());
return userInfo;
}
}
启动类App
package com.tang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
3.配置converters
对App启动类进行处理
1)启动类继承WebMvcConfigurerAdapter
2)重写configureMessageConverters方法
package com.tang;
import java.util.List;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
@SpringBootApplication
public class App extends WebMvcConfigurerAdapter{
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
//1.定义一个消息转换对象convert
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2.添加fastJson配置信息,是否需要格式化
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3.在convert添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4.将convert添加到converters中
converters.add(fastConverter);
}
}
或者使用@Bean注解配置,如下:
package com.tang;
import java.util.List;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.HttpMessageConverter;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
@SpringBootApplication
public class App{
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
/**
* 通过@Bean注解
* @return
*/
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
//1.定义一个消息转换对象convert
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2.添加fastJson配置信息,是否需要格式化
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3.在convert添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4.将convert添加到converters中
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
}
4.测试
fastjson已经起作用