ObjectMapper

spring boot rabbitmq传递bean(实体类)/ JSON

点点圈 提交于 2020-08-11 14:19:37
spring boot使用rabbitmq传递实体类:java对象必须 序列化 。 实现序列化有2种方式: 1)bean对象实现Serializable接口 发送者和接收者bean对象都必须序列化 2)借助SerializationUtils工具类 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.8</version> </dependency> 1 2 3 4 5 发送者:SerializationUtils.serialize() 接收者:SerializationUtils.deserialize() 缺点: 发送者和接收者的bean定义必须一模一样,包括bean路径 spring boot使用rabbitmq传递JSON对象 由于MQ直接传递JSON对象有弊端,所以建议使用JSON传递。 把对象使用ObjectMapper等JSON工具类把对象转换为JSON格式,然后发送。 @Autowired private ObjectMapper objectMapper; List<SystemConfiguration> configs = constructConfigs(protocolId); String msgJson

Spring Boot Sample 022之spring-boot-data-redis-lettuce

一世执手 提交于 2020-08-11 07:29:51
一、环境 Idea 2020.1 JDK 1.8 maven 二、目的 spring boot 通过lettuce整合redis gitHub地址: https://github.com/ouyushan/ouyushan-spring-boot-samples 三、步骤 3.1、点击File -> New Project -> Spring Initializer,点击next 3.2、在对应地方修改自己的项目信息 3.3、选择Web依赖,选中Spring Web、Spring Boot Redis。可以选择Spring Boot版本,本次默认为2.2.7,点击Next 3.4、项目结构 四、添加文件 pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <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>

Springboot集成flowable modeler 免登录,并且查询用户/用户组改为自己系统数据

时光总嘲笑我的痴心妄想 提交于 2020-08-10 19:55:55
之前画流程图都是用tomcat启动flowable modeler,但是这样启动就不能在分配任务用户/用户组的时候查询自己系统里的数据。所以现在需要把flowable modeler集成到项目里来。 之前自己也搜索了很多文章,都感觉不是很清晰,可能也是因为我刚接触不久。现在自己集成好了之后,记录一下自己学习的结果。 首先需要创建一个springboot应用,pom文件中引入相关jar包: <properties> <java.version>1.8</java.version> <flowable.version>6.4.1</flowable.version> <lombok.version>1.18.0</lombok.version> <fastjson.version>1.2.9</fastjson.version> </properties> < dependencyManagement > < dependencies > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-dependencies </ artifactId > < type > pom </ type > < scope > import </ scope > </

什么是 Java 对象深拷贝?

﹥>﹥吖頭↗ 提交于 2020-08-10 18:23:55
作者:吴大山 wudashan.com/2018/10/14/Java-Deep-Copy 介绍 在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。 浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。 而深拷贝则是拷贝了源对象的所有值,所以即使源对象的值发生变化时,拷贝对象的值也不会改变。如下图描述: 了解了浅拷贝和深拷贝的区别之后,本篇博客将教大家几种深拷贝的方法。 拷贝对象 首先,我们定义一下需要拷贝的简单对象。 /** * 用户 */ public class User { private String name; private Address address; // constructors, getters and setters } /** * 地址 */ public class Address { private String city; private String country; // constructors, getters and setters } 如上述代码,我们定义了一个User用户类,包含name姓名,和address地址,其中address并不是字符串,而是另一个Address类,包含country国家和city城市。构造方法和成员变量的get()、set()方法此处我们省略不写

java操作ElasticSearch(es)进行增删查改操作

我怕爱的太早我们不能终老 提交于 2020-08-09 20:12:18
有时间是要了解一下ES这个东西的~ ------------------------------------------------------------------------------------------------- ElasticSearch(名称太长,后面简称ES)作为一个搜索引擎,目前可谓是如日中天,几乎和solr齐驾并驱。关于他能做什么,跟云计算有什么关系,在此不再描述。但是ES的官方文档,特别是关于java的客户端文档,真是少的可怜,甚至连个完整的增删改的示例都没有。在此,我就献丑了。 在开始讲解之前,还是先做个铺垫,为了能够有一个可以索引的模型,我们自定义了一个模型,暂时起个名称叫LogModel吧,这个模型有各种数据类型,int,long,String,list,但千万不要认为这是跟记录日志有关的一个模型。作为索引的一个最简单模型。代码如下: Java代码 import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.UUID; /** * 瞎编的一个模型,跟日志基本没有关系 * @author donlian */ public class LogModel { //主ID private long id; //次ID

sping boot2 redis问题处理

為{幸葍}努か 提交于 2020-08-09 11:02:23
1.类型转换问题 因为我用的json序列化保存到redis的,当获取SET集合的时候强制转换会失败的 就是 Object无法转换你写的实体类 这时候处理的手段是 添加了两成转化 /** * 获取群组用户 * @param groupID * @return */ public static Set<ChartUser> getGroupUser(ChatGroup groupID){ return (Set<ChartUser>)(Set<?>)redisService.getSet(RedisPre.DB_GROUP_SET+groupID.getGroupCode()); } 2.读取redis的时候因为我用的是json串可能没有反序列化数据 这里就是你的序列化工具调整为是否所有字段都存在才反序列化处理 3.我这里想再序列化的数据中某些数据可以过滤掉一些字段 暂且没想到好的办法,这里采用了两个连接(例如a正常所有字段,b只有一些关键字段) 这里用了2.10.版本的jackson,其他网上找的有漏洞使用的方法已被禁用了 @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory

java http请求建议使用webClient,少用RestTemplate,不用HttpClient

牧云@^-^@ 提交于 2020-08-09 10:50:22
简介: webClient:是Spring-webFlux包下的,非阻塞响应,最低java8支持函数式编程,性能好 RestTemplate:是Spring-webmvc包下的,满足RestFul原则,代码简单,默认依赖jdk的HTTP连接工具。 HttpClient:是apache httpClient包下的,代码复杂,需要资源回收。 一、webClient get代码如下:(非常简单) //create()创建一个WebClient的实例 //get()等选择调用方式为get //uri()指定需要请求的路径 //retrieve()用来发起请求并获得响应 //bodyToMono(String.class)用来指定请求结果需要处理为String,并包装为Reactor的Mono对象。 Mono<String> response = WebClient.create().get().uri("http:localhost:8080/rest/testGetHeader").retrieve().bodyToMono(String.class); return response.block(); 二、RestTemplate get代码如下:(简单) 1、先在启动类注册: @Bean public RestTemplate restTemplate(){ return new

设计通用请求与返回加解密处理

不问归期 提交于 2020-08-08 04:37:58
1. 场景 1.要求对接口中部分输入和输出参数进行加解密。如密码要求前端加密后传给后端进行解密。 2.对整个请求头requestBody和返回内容ResponseBody进行加解密,如涉及到金额时,整个请求内容都加密传输。 2.解决方案 为了减少代码的侵入,采用注解形式进行处理。 /** * 进行参数解密 */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface DecryptField { String algorithm() default "AES"; } /** * 进行参数加密 */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface EncryptField { String algorithm() default "AES"; } @Target({ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface DecryptRequestBody { boolean decryptBody

Jackson之注解大全

冷暖自知 提交于 2020-08-07 21:09:35
文章转载自 https://blog.csdn.net/blwinner/article/details/98532847 另一篇 https://www.jianshu.com/p/201943f8d579 原文很全,大家可以直接去看 文章目录 Jackson简介 特点 POM Jackson常用注解 1. 序列化注解 1.1 @JsonAnyGetter 1.2 @JsonGetter 1.3 @JsonPropertyOrder 1.4 @JsonRawValue 1.5 @JsonValue 1.6 @JsonRootName 1.7 @JsonSerialize 2 反序列化注解 2.1 @JsonCreator 2.2 @JacksonInject 2.3 @JsonAnySetter 2.4 @JsonSetter 2.5 @JsonDeserialize 2.6 @JsonAlias 3 属性包含注解 3.1 @JsonIgnoreProperties 3.2 @JsonIgnore 3.3 @JsonIgnoreType 3.4 @JsonInclude 3.5 @JsonAutoDetect 4 常用注解 4.1 @JsonProperty 4.2 @JsonFormat 4.3 @JsonUnwrapped 4.4 @JsonView 4.5

abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十二(四十八)

白昼怎懂夜的黑 提交于 2020-08-07 13:13:46
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四) abp(net core)+easyui+efcore实现仓储管理系统——创建应用服务(五) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之控制器(六) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之菜单与测试(九) abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十一) abp(net core)+easyui+efcore实现仓储管理系统—