写点什么

jackson 学习之九:springboot 整合 (配置文件),jpa 和 mybatis 的区别面试

用户头像
极客good
关注
发布于: 刚刚

<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">


<modelVersion>4.0.0</modelVersion>


<parent>


<artifactId>jacksondemo</artifactId>


<groupId>com.bolingcavalry</groupId>


<version>1.0-SNAPSHOT</version>


<relativePath>../pom.xml</relativePath>


</parent>


<groupId>com.bolingcavalry</groupId>


<artifactId>springbootproperties</artifactId>


<version>0.0.1-SNAPSHOT</version>


<name>springbootproperties</name>


<description>Demo project for Spring Boot</description>


<properties>


<java.version>1.8</java.version>


</properties>


<dependencyManagement>


<dependencies>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-dependencies</artifactId>


<version>2.3.3.RELEASE</version>


<type>pom</type>


<scope>import</scope>


</dependency>


</dependencies>


</dependencyManagement>


<dependencies>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-web</artifactId>


</dependency>


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-test</artifactId>


<scope>test</scope>


<exclusions>


<exclusion>


<groupId>org.junit.vintage</groupId>


<artifactId>junit-vintage-engine</artifactId>


</exclusion>


</exclusions>


</dependency>


<dependency>


<groupId>io.springfox</groupId>


<artifactId>springfox-swagger2</artifactId>


</dependency>


<dependency>


<groupId>io.springfox</groupId>


<artifactId>springfox-swagger-ui</artifactId>


</dependency>


</dependencies>


<build>


<plugins>


<plugin>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-maven-plugin</artifactId>


</plugin>


</plugins>


</build>


</project>


  1. 启动类很平常:


package com.bolingcavalry.springbootproperties;


import org.springframework.boot.SpringApplication;


import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication


public class SpringbootpropertiesApplication {


public static void main(String[] args) {


SpringApplication.run(SpringbootpropertiesApplication.class, args);


}


}


  1. 由于用到了 swagger,因此要添加 swagger 配置:


package com.bolingcavalry.springbootproperties;


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.springbootproperties.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();


}


}


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


  1. 序列化和反序列化用到的 Bean 类,可见使用了 JsonProperty 属性来设置序列化和反序列化时的 json 属性名,field0 字段刻意没有 get 方法,是为了验证 JsonProperty 的序列化能力:


package com.bolingcavalry.springbootproperties.bean;


import com.fasterxml.jackson.annotation.JsonProperty;


import io.swagger.annotations.ApiModel;


import io.swagger.annotations.ApiModelProperty;


import java.util.Date;


@ApiModel(description = "JsonProperty 注解测试类")


public class Test {


@ApiModelProperty(value = "私有成员变量")


@JsonProperty(value = "json_field0", index = 1)


private Date field0 = new Date();


public void setField0(Date field0) {


this.field0 = field0;


}


@ApiModelProperty(value = "来自 get 方法的字符串")


@JsonProperty(value = "json_field1", index = 0)


public String getField1() {


return "111";


}


@Override


public String toString() {


return "Test{" +


"field0=" + field0 +


'}';


}


}


  1. 测试用的 Controller 代码如下,很简单只有两个接口,serialization 返回序列化结果,deserialization 接受客户端请求参数,反序列化成实例,通过 toString()来检查反序列化的结果,另外,还通过 Autowired 注解从 spring 容器中将 ObjectMapper 实例直接拿来用:


package com.bolingcavalry.springbootproperties.controller;


import com.bolingcavalry.springbootproperties.bean.Test;


import com.fasterxml.jackson.core.JsonProcessingException;


import com.fasterxml.jackson.databind.ObjectMapper;


import io.swagger.annotations.Api;


import io.swagger.annotations.ApiOperation;


import org.slf4j.Logger;


import org.slf4j.LoggerFactory;


import org.springframework.beans.factory.annotation.Autowired;


import org.springframework.web.bind.annotation.RequestBody;


import org.springframework.web.bind.annotation.RequestMapping;


import org.springframework.web.bind.annotation.RequestMethod;


import org.springframework.web.bind.annotation.RestController;


@RestController


@RequestMapping("/jsonproperty")


@Api(tags = {"JsonPropertySerializationController"})


public class JsonPropertySerializationController {


private static final Logger logger = LoggerFactory.getLogger(JsonPropertySerializationController.class);

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
jackson学习之九:springboot整合(配置文件),jpa和mybatis的区别面试