有很多的业务相关参数,将来可能会根据实际情况临时调整。例如购物车业务,购物车数量有一个上限,默认是10,对应代码如下:
现在这里购物车是写死的固定值,我们应该将其配置在配置文件中,方便后期修改。
但现在的问题是,即便写在配置文件中,修改了配置还是需要重新打包、重启服务才能生效。能不能不用重启,直接生效呢?
这就要用到Nacos的配置热更新能力了,分为两步:
-
在Nacos中添加配置
-
在微服务读取配置
1.1.添加配置到Nacos
首先,我们在nacos中添加一个配置文件,将购物车的上限数量添加到配置中
注意文件的dataId格式:服务名-[spring.active.profile]-后缀名
文件名称由三部分组成:
-
服务名
:我们是购物车服务,所以是cart-service
-
spring.active.profile
:就是spring boot中的spring.active.profile
,可以省略,则所有profile共享该配置 -
后缀名
:例如yaml1.2.配置热更新
接着,我们在微服务中读取配置,实现配置热更新。
在
cart-service
中新建一个属性读取类:
package com.hmall.cart.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "hm.cart")
@Data
@Component
public class CartProperties {
private Integer maxItems;
}
然后再将代码改动:
private void checkCartsFull(Long userId) {
int count = lambdaQuery().eq(Cart::getUserId, userId).count();
if (count >= cartProperties.getMaxItems()) {
throw new BizIllegalException(StrUtil.format("用户购物车课程不能超过{}", cartProperties.getMaxItems()));
}
}
最后可以在Nacos编辑配置,即可实现热更新!