1 Maven 概述
Maven 是一个项目管理工具,它蕴含了一个我的项目对象模型 (Project Object Model),一组规范汇合,一个我的项目生命周期 (Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase) 中插件 (plugin) 指标 (goal) 的逻辑。当你应用 Maven 的时候,你用一个明确定义的我的项目对象模型来形容你的我的项目,而后 Maven 能够利用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
maven 次要是用来解决包依赖问题。
在我的项目分服务开发中,之前大家是导入 jar 包来引入代码,可能存在不同服务雷同性能应用不同版本,导致局部性能无奈应用。
后引入 maven 项目管理工具,先能够将服务中的雷同性能向上抽取,造成共性依赖 maven-parent,各服务中依赖继承 maven-parent,对立治理依赖,方便管理和保护,防止包依赖问题。
留神:将 maven-parent 打成 pom 包 <
packaging>pom</packaging>
2 Jackson
概述:Jackson 是一个 Java 的用来解决 JSON 格局数据的类库
三大性能:
- jackson-core,外围包,提供基于 ” 流模式 ” 解析的相干 API,它包含 JsonPaser 和 JsonGenerator。Jackson 外部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。
- jackson-annotations,注解包,提供规范注解性能;
- jackson-databind,数据绑定包,提供基于 ” 对象绑定 ” 解析的相干 API(ObjectMapper)和 ” 树模型 ” 解析的相干 API(JsonNode);基于 ” 对象绑定 ” 解析的 API 和 ” 树模型 ” 解析的 API 依赖基于 ” 流模式 ” 解析的 API。
2.1 ObjectMapper
Jackson 最罕用的 API 就是基于 ” 对象绑定 ” 的 ObjectMapper。上面是一个 ObjectMapper 的应用的简略示例。
- ObjectMapper 通过 writeValue 系列办法 将 java 对 象序列化 为 json,并 将 json 存 储成不同的格局,String(writeValueAsString),Byte Array(writeValueAsString),Writer,File,OutStream 和 DataOutput。
- ObjectMapper 通过 readValue 系列办法从不同的数据源像 String,Byte Array,Reader,File,URL,InputStream 将 json 反序列化为 java 对象。
json 与对象的转化:
package com.jt.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ObjectMapperUtil {
/**
*1. 对象如何转化为 JSON 串的???
* 步骤:
* 1. 获取对象的所有的 getXXXX()办法.
* 2. 将获取的 getXXX 办法的前缀 get 去掉 造成了 json 的 key=xxx
* 3. 通过 getXXX 办法的调用获取属性的值, 造成了 json 的 value 的值.
* 4. 将获取到的数据 利用 json 格局进行拼接 {key : value,key2:value2....}
* 2.JSON 如何转化为对象???
* {lyj:xxx}
* 步骤:
* 1. 依据 class 参数类型, 利用 java 的反射机制, 实例化对象.
* 2. 解析 json 格局, 辨别 key:value
* 3. 进行办法的拼接 setLyj()名称.
* 4. 调用对象的 setXXX(value) 将数据进行传递,
* 5. 最终将所有的 json 串中的 key 转化为对象的属性.
**/
private static final ObjectMapper MAPPER = new ObjectMapper();
// 将对象转化为 JSON
public static String toJSON(Object target){
try {return MAPPER.writeValueAsString(target);
} catch (JsonProcessingException e) {e.printStackTrace();
throw new RuntimeException(e);
}
}
// 将 JSON 转化为对象
// 需要: 如果用户传递什么类型, 则返回什么对象
public static <T> T toObject(String json,Class<T> targetClass){
try {return MAPPER.readValue(json, targetClass);
} catch (JsonProcessingException e) {e.printStackTrace();
throw new RuntimeException(e);
}
}
}