2021-02-08

jackson学习之十(终篇):springboot整合(配置类)

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

系列文章汇总

  • jackson学习之一:基本信息
  • jackson学习之二:jackson-core
  • jackson学习之三:常用API操作
  • jackson学习之四:WRAP_ROOT_VALUE(root对象)
  • jackson学习之五:JsonInclude注解
  • jackson学习之六:常用类注解
  • jackson学习之七:常用Field注解
  • jackson学习之八:常用方法注解
  • jackson学习之九:springboot整合(配置文件)
  • jackson学习之十(终篇):springboot整合(配置类)

本篇概览

  • 本文是《jackson学习》系列的终篇,经过前面的一系列实战,相信您已可以熟练使用jackson灵活的执行各种json序列化和反序列化操作,那么,本篇就以轻松的方式来完成整个系列吧;
  • 上一篇介绍的是在springboot中通过配置文件对jackson做设置,今天要聊的是另一种常用的jackson配置方式:配置类,就是自己编写代码实例化和配置springboot全局使用的ObjectMapper实例;

源码下载

  1. 如果您不想编码,可以在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协议
  1. 这个git项目中有多个文件夹,本章的应用在jacksondemo文件夹下,如下图红框所示:

在这里插入图片描述

  1. jacksondemo是父子结构的工程,本篇的代码在springbootconfigbean子工程中,如下图:

在这里插入图片描述

编码

  1. 在父工程jacksondemo下新增子工程springbootconfigbean,pom.
<?
  1. 本文最重要的代码是配置类JacksonConfig.java,如下,需要ConditionalOnMissingBean注解避免冲突,另外还给实例指定了名称customizeObjectMapper,如果应用中通过Autowired使用此实例,需要指定这个名字,避免报错"There is more than one bean of 'ObjectMapper ' type":
@Configurationpublic 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; }}
  1. 对于JacksonConfig.getObjectMapper方法内的设置,如果您想做更多设置,请参考《jackson学习之三:常用API操作》里面的设置内容;
  • 启动类依然很简单:
package com.bolingcavalry.springbootconfigbean;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringbootConfigBeanApplication { public static void main(String[] args) {  SpringApplication.run(SpringbootConfigBeanApplication.class, args); }}
  1. 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@EnableSwagger2public 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(); } //构建 api文档的详细信息函数,注意这里的注解引用的是哪个 private ApiInfo apiInfo() {  return new ApiInfoBuilder()    //页面标题    .title("SpringBoot整合Jackson(基于配置文件)")    //创建人    .contact(new Contact("程序员欣宸", "https://github.com/zq2599/blog_demos", "zq2599@gmail.com"))    //版本号    .version("1.0")    //描述    .description("API 描述")    .build(); }}
  1. 最后是测试用的Controller类,要注意的是在使用ObjectMapper实例的地方,用Autowired注解的时候,记得带上Qualifier注解:
package com.bolingcavalry.springbootconfigbean.controller;import com.bolingcavalry.springbootconfigbean.bean.Test;import com.faster

验证

  1. 启动SpringbootConfigBeanApplication后,浏览器打开 src="https://img2020.cnblogs.com/other/485422/202102/485422-20210208083705172-1073664773.jpg" alt="在这里插入图片描述" loading="lazy">
    3. 再验证反序列化接口 /jsonproperty/deserialization:

    在这里插入图片描述

    • 至此,整个《jackson学习》系列就全部完成了,希望这十篇内容能够给您带来一些参考,助您在编码过程中更加得心应手的使用Jackson;

    你不孤单,欣宸原创一路相伴

    1. Java系列
    2. Spring系列
    3. Docker系列
    4. kubernetes系列
    5. 数据库+中间件系列
    6. DevOps系列

    欢迎关注公众号:程序员欣宸

    微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
    https://github.com/zq2599/blog_demos









    原文转载:http://www.shaoqun.com/a/537564.html

    跨境电商:https://www.ikjzd.com/

    Zozo:https://www.ikjzd.com/w/2180

    贝恩资本:https://www.ikjzd.com/w/1336


    欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;系列文章汇总jackson学习之一:基本信息jackson学习之二:jackson-corejackson学习之三:常用API操作jackson学习之四:WRAP_ROOT_VALUE(root对象)
    weebly:weebly
    vincent:vincent
    【核心运营】做好Shopify独立站的五大核心因素(缺一不可):【核心运营】做好Shopify独立站的五大核心因素(缺一不可)
    华为反击!要求美国运营商巨头支付 10 亿美元专利费!:华为反击!要求美国运营商巨头支付 10 亿美元专利费!
    Wish:有这4项特征的产品,赶紧做海外仓!:Wish:有这4项特征的产品,赶紧做海外仓!

No comments:

Post a Comment