SpringCloud微服务开发的一些坑
Spring Boot
1 application.yml或者.yaml不标记为小绿叶,但是可以用,问题可能是Spring Boot插件或者Yaml插件无效,检查重启一下,无效则:
一般idea默认的yml文件后缀是.yml或者.yaml,如果.yml不行可以尝试修改成.yaml,如果这时小绿叶出现了,那么基本就是以下说的这种情况

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

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

大致是这么一个情况,原理暂时不去讨论.
ES
1
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就是用在简单数据类型的加减上的,不会有对象参与,所以实现的功能一般都是简单功能,这个处理就足够了
而如果真的出现较为复杂的情况,要么改变思路,要么重写一个方法

浙公网安备 33010602011771号