SpringCloud微服务开发的一些坑

Spring Boot

1 application.yml或者.yaml不标记为小绿叶,但是可以用,问题可能是Spring Boot插件或者Yaml插件无效,检查重启一下,无效则:

  

一般idea默认的yml文件后缀是.yml或者.yaml,如果.yml不行可以尝试修改成.yaml,如果这时小绿叶出现了,那么基本就是以下说的这种情况

如图情况,但是运行正常,只是idea不识别为spring的主配置文件

解决:

 

而我的情况是:

Setting -> fileType里面的这个选项,不知为什么加了这么一条,导致了application.yml被标记成普通文件,不被识别

解决就是把他去掉

大致是这么一个情况,原理暂时不去讨论.

ES

org.elasticsearch.ElasticsearchStatusException:
Elasticsearch exception [type=invalid_index_name_exception, 
reason=Invalid index name [skuInfo], must be lowercase]

  用实体类映射Es中的index时,indexname必须是小写,如果不用@Document指定名称,根据我实际使用时的效果,大概会默认将类名SkuInfo(大写的)作为indexname(因为他报错提示的是indexname要小写而不是提示我没给index命名)

  

 

 

redis

  报错:ERR hash value is not an integer

  问题:  通常使用increment(key,num)的时候会出现这个问题,原因是因为redis序列化存储的机制,

    举个例子:hash结构,往redis存数据的时候用的是put(),redis会序列化数据然后再存储,但是increment操作数据时是不会有序列化或者反序列化操作的,那么简单来说就是让一个序列化后的数据加上一个未序列化的数据,出现类型不匹配,报错就是hash value is not an integer (或者其他的数据类型),

  解决: 如果是想保留increment的加的功能实现,那么最简单的解决方法是把初始化数据时的put换成increment,increment对不存在的key默认会添加key值并从0开始加,最终效果和put一样,但是存的数据并不会序列化,一般increment就是用在简单数据类型的加减上的,不会有对象参与,所以实现的功能一般都是简单功能,这个处理就足够了  

  而如果真的出现较为复杂的情况,要么改变思路,要么重写一个方法

posted @ 2022-09-15 17:10  SystemCall  阅读(256)  评论(0)    收藏  举报