本篇概览
-
本文是《jackson学习》系列的终篇,经过前面的一系列实战,相信您已可以熟练使用jackson灵活的执行各种json序列化和反序列化操作,那么,本篇就以轻松的方式来完成整个系列吧;
-
上一篇介绍的是在springboot中通过配置文件对jackson做设置,今天要聊的是另一种常用的jackson配置方式:配置类,就是自己编写代码实例化和配置springboot全局使用的ObjectMapper实例;
源码下载
- 如果您不想编码,可以在GitHub下载所有源码,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
| 名称 | 链接 | 备注 |
| :-- | :-- | :-- |
| 项目主页 | https://github.com/zq2599/blog_demos | 该项目在GitHub上的主页 |
| git仓库地址(https) | https://github.com/zq2599/blog_demos.git | 该项目源码的仓库地址,https协议 |
| git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
- 这个git项目中有多个文件夹,本章的应用在jacksondemo文件夹下,如下图红框所示:
- jacksondemo是父子结构的工程,本篇的代码在springbootconfigbean子工程中,如下图:
编码
- 在父工程jacksondemo下新增子工程springbootconfigbean,pom.xml如下:
<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
jacksondemo
com.bolingcavalry
1.0-SNAPSHOT
…/pom.xml
com.bolingcavalry
springbootconfigbean
0.0.1-SNAPSHOT
springbootconfigbean
Demo project for Spring Boot with Jackson, configuration from config bean
<java.version>1.8</java.version>
org.springframework.boot
spring-boot-dependencies
2.3.3.RELEASE
pom
import
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
org.springframework.boot
spring-boot-maven-plugin
- 本文最重要的代码是配置类JacksonConfig.java,如下,需要ConditionalOnMissingBean注解避免冲突,另外还给实例指定了名称customizeObjectMapper,如果应用中通过Autowired使用此实例,需要指定这个名字,避免报错"There is more than one bean of 'ObjectMapper ’ type":
@Configuration
public class JacksonConfig {
@Bean(“customizeObjectMapper”)
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper getObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper mapper = builder.build();
// 日期格式
mapper.setDateFormat(new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”));
// 美化输出
mapper.enable(SerializationFeature.INDENT_OUTPUT);
return mapper;
}
}
- 对于JacksonConfig.getObjectMapper方法内的设置,如果您想做更多设置,请参考《jackson学习之三:常用API操作》里面的设置内容;
- 启动类依然很简单:
package com.bolingcavalry.springbootconfigbean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootConfigBeanApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootConfigBeanApplication.class, args);
}
}
- swagger配置:
package com.bolingcavalry.springbootconfigbean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Tag;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.tags(new Tag(“JsonPropertySerializationController”, “JsonProperty相关测试”))
.select()
// 当前包路径
.apis(RequestHandlerSelectors.basePackage(“com.bolingcavalry.springbootconfigbean.controller”))
.paths(PathSelectors.any())
.build();
}
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
g-Xhr83ee2-1715698012323)]
[外链图片转存中…(img-oLOQzwrg-1715698012324)]
[外链图片转存中…(img-9mE7aCV1-1715698012324)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!