当前位置:首页 » 《资源分享》 » 正文

写DA-SPIDER项目遇到的一些报错,SpringCloud,异常问题,随笔~_王大师企业官方博客

9 人参与  2021年10月18日 08:23  分类 : 《资源分享》  评论

点击全文阅读


本人详解
作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》作者
公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题、中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯
转载说明:务必注明来源(注明:作者:王文峰哦)

写DA-SPIDER项目遇到的一些报错,SpringCloud,异常问题,随笔~

  • 一、关于java.util.LinkedHashMap cannot be cast to 实体类......问题的出现以及解决办法
  • 二、ObjectMapper的简单使用
  • 三、Cannot deserialize value of type `java.util.Date` from String “2021-08-21T07:25:20.000Z“
  • 四、 Spring Cloud Consul应用下线后,健康检查自动删除无效服务
  • 五、出现这种问题是因为定义实体类的时候指定@id字段不是数据库中的主键,而且数据库中该字段的数据违背唯一性。
  • 六、 @EnableFeignClients 工作原理
  • 七、微服务之间的互相调用
  • 八、@NotNull、@NotBlank及@NotEmpty和@Size及@Length区别
  • 九、stream().filter()的用法
  • 小结
  • 学习目标(传送门)
  • 面试题总结

在这里插入图片描述

一、关于java.util.LinkedHashMap cannot be cast to 实体类…问题的出现以及解决办法

解决方案:

restTemplate.getForObject()String类型接受,也即接受的是一个json字符串

// 将响应体内容以String格式接受,即json字符串
String json = restTemplate.getForObject("http://SPRINGCLOUD-EMPLOYEE-PROVIDER/emp/list",
                String.class);

再使用阿里巴巴的fastjson将json字符串转变成list集合

// 将json字符串转集合 
List<EmployeeModel> employeeModels = JSON.parseArray(json, EmployeeModel.class);

现在就是一个正常的List集合了,可以遍历之类的操作

二、ObjectMapper的简单使用

简单介绍
ObjectMapper类(com.fasterxml.jackson.databind.ObjectMapper)是Jackson的主要类,它可以帮助我们快速的进行各个类型和Json类型的相互转换。
常用方法:

ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Hyl\", \"age\":20}";
 
//将字符串转换为对象
Student student = mapper.readValue(jsonString, Student.class);
System.out.println(student);
 
//将对象转换为json字符串
jsonString = mapper.writeValueAsString(student);
System.out.println(jsonString);
 
 
结果:
Student [ name: Hyl, age: 20 ]
 
{
  "name" : "Hyl",
  "age" : 20
}

三、Cannot deserialize value of type java.util.Date from String “2021-08-21T07:25:20.000Z“

解决方案:
大体意思是说 前台向后台发起请求时,DateTimeFormat 接收到的前台参数为String,无法将String转变为Date
修改 vo层代码:

/**
 * 结束时间
 */
@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd'T'HH:mm:ss")
private Date endDateTime;

yyyy-MM-dd HH:mm:ss 改为 yyyy-MM-dd’T’HH:mm:ss

问题解决

四、 Spring Cloud Consul应用下线后,健康检查自动删除无效服务

解决方案:
在配置文件中如上配置后可以使得服务下线后自动删除无效服务,而不必像很多的博客中写的那样专门写一个删除失效服务。

其它的配置属性解析:

spring.cloud.consul.host:配置consul地址
spring.cloud.consul.port:配置consul端口
spring.cloud.consul.discovery.enabled:启用服务发现
spring.cloud.consul.discovery.register:启用服务注册
spring.cloud.consul.discovery.deregister:服务停止时取消注册
spring.cloud.consul.discovery.prefer-ip-address:表示注册时使用IP而不是hostname
spring.cloud.consul.discovery.health-check-interval:健康检查频率
spring.cloud.consul.discovery.health-check-path:健康检查路径
spring.cloud.consul.discovery.health-check-critical-timeout:健康检查失败多长时间后,取消注册
spring.cloud.consul.discovery.instance-id:服务注册标识

五、出现这种问题是因为定义实体类的时候指定@id字段不是数据库中的主键,而且数据库中该字段的数据违背唯一性。

解决方案:

  1. 使用@id的字段必须是主键。

  2. Oracle 13 版中可以支持某个字段为主键,同时还可以指定多列组合成约束条件。相当于两个主键。两个主键同时唯一才可以插入新数据。
    ————————————————
    版权声明:本文为CSDN博主「AZFU0BN」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/chence19871/article/details/99985785

六、 @EnableFeignClients 工作原理

解决方案:
注解@EnableFeignClients:扫描和注册feign客户端bean定义
注解@EnableFeignClients告诉框架扫描所有使用注解@FeignClient定义的feign客户端。它又通过注解@Import导入了类FeignClientsRegistrar( feign客户端注册器)

七、微服务之间的互相调用

解决方案:

@FeignClient(value = "dyj-goods" ,url = "localhost:8082")
public interface GoodsClient  extends GoodsApi{
 
}

八、@NotNull、@NotBlank及@NotEmpty和@Size及@Length区别

解决方案:
1 @NotEmpty :不能为null,且Size>0
2 @NotNull:不能为null,但可以为empty,没有Size的约束
3 @NotBlank:只用于String,不能为null且trim()之后size>0

九、stream().filter()的用法

解决方案:
stream.filter一般适用于list集合,主要作用就是模拟sql查询,从集合中查询想要的数据。filter里面的参数user是指集合里面的每一项

public class StreamTest{
    public static void main(String[] args){
        List<User> list = new ArrayList<>();
        //定义三个用户对象
        User user1 = new User();
        user1.setUsername("huxiansen");
        user1.setPassword("123456");
        User user2 = new User();
        user2.setUsername("huxianseng");
        user2.setPassword("123456");
        User user3 = new User();
        user3.setUsername("huxiansen");
        user3.setPassword("12345");
        //添加用户到集合中
        list.add(user1);
        list.add(user2);
        list.add(user3);//在集合中查询用户名为huxiansen的集合
        List<User> userList = list.stream().filter(user -> "huxiansen".equals(user.getUsername())).collect(Collectors.toList());
        //在集合中查询出第一个用户密码为123456的用户
        Optional<User> user = list.stream().filter(userTemp -> "123456".equals(userTemp.getPassword())).findFirst();System.out.println(userList);
        System.out.println(user);
    }
}

小结

学习目标(传送门)

1、掌握 JAVA入门到进阶知识(持续写作中……
2、学会Oracle数据库用法(创作中……
3、手把手教你vbs脚本制作(完善中……
4、牛逼哄哄的 IDEA编程利器(编写中……
5、吐血整理的 面试技巧(更新中……

在这里插入图片描述

面试题总结

 第一章:日常_JAVA_面试题集15(含答案)
 第二章:日常_JAVA_面试题集14(含答案)
 往期文章大全……
在这里插入图片描述

  以上就是今天的内容,关注我,不迷路。

 平安壹钱包面试官:请你说一下Mybatis的实现原理

 Java开发-热点-热门问题精华总结-推荐

一键三连 一键三连 一键三连~
在这里插入图片描述

本人详解
作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》作者
公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题、中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯
转载说明:务必注明来源(注明:作者:王文峯哦)


点击全文阅读


本文链接:http://zhangshiyu.com/post/29979.html

集合  字段  字符串  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1