一:配置启动类
配置原因:当我们的微服务模块较多的时候,不仅需要占用大量内存,而且还需要一个一个去启动,步骤相当繁琐。所以我们可以对每个微服务的内存占用空间调整一下。
1.点击加号,新建Compound
2.将需要启动的模块添加到compound中
3.配置启动类内存
在VM options中添加 -Xmx100m
4.修改compound名称为gulimail
5.重启项目
此时启动就可以将所有添加的项目同时启动
二:前后端联调
1.设置mysql事务的隔离级别
当我们在service方法上添加@Transactional注解以后,事物没有提交之前数据是读不出来的。而mysql默认的隔离级别是可重复读。也就是必须要读到已经提交的数据。此时我们需要将当前会话设置为读未提交,此时当前窗口就可以读到未提交的数据,方便测试。
set session transaction isolation level read uncommitted
2.设置feign的超时时间
- 在application.properties添加配置
ribbon.ReadTimeout=5000
ribbon.ConnectTimeout=5000
- 在application.yml文件添加相关配置
feign:
client:
config:
default:
#不设置connectTimeout会导致readTimeout设置不生效
connectTimeout: 3000
readTimeout: 6000
3.细节优化
1)没有图片路径的无需保存
//6.2)sku的图片信息pmd_sku_images
List<SkuImagesEntity> imagesEntities = sku.getImages().stream().map(img->{
SkuImagesEntity skuImagesEntity = new SkuImagesEntity();
skuImagesEntity.setSkuId(skuId);
skuImagesEntity.setImgUrl(img.getImgUrl());
skuImagesEntity.setDefaultImg(img.getDefaultImg());
return skuImagesEntity;
}).filter(entity->{
//返回true就是需要,返回false就是被剔除
return StringUtils.isNotEmpty(entity.getImgUrl());
}).collect(Collectors.toList());
skuImagesService.saveBatch(imagesEntities);
2)当没有满减信息时,无需保存
//6.4)sku的优惠满减等信息:gulimail_sms
SkuReductionTo skuReductionTo = new SkuReductionTo();
BeanUtils.copyProperties(sku,skuReductionTo);
skuReductionTo.setSkuId(skuId);
if( skuReductionTo.getFullCount() > 0 || skuReductionTo.getFullPrice().compareTo(new BigDecimal("0")) == 1){
R r1 = couponFeignService.saveSkuReduction(skuReductionTo);
if( r1.getCode() != 0){
log.error("远程保存sku优惠信息失败");
}
}
- BigDecimal比较需要使用compareTo方法