配置共享
nacos除了作为服务注册中心以外还可以实现配置中的功能,可以将一些公共的配置抽取到nacos中进行配置管理。下面是具体的实现
抽取公共配置
首先是jdbc相关配置:

然后是日志配置:
最后是swagger的配置

将配置都抽取到配置中心当中

引入相关依赖
<!--nacos配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--读取bootstrap文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
编写bootstrap文件
spring:
application:
name: cart-service # 服务名称
profiles:
active: dev
cloud:
nacos:
server-addr: 192.168.150.129 # nacos地址
config:
file-extension: yaml # 文件后缀名
shared-configs: # 共享配置
- dataId: shared-jdbc.yaml # 共享mybatis配置
- dataId: shared-log.yaml # 共享日志配置
- dataId: shared-swagger.yaml # 共享日志配置
修改原来的yaml文件
server:
port: 8082
feign:
okhttp:
enabled: true # 开启OKHttp连接池支持
hm:
swagger:
title: 购物车服务接口文档
package: com.hmall.cart.controller
db:
database: hm-cart
这样就可以实现共享配置
配置热更新
当我们获取购物车容量大小的时候是通过硬编码写的
private void checkCartsFull(Long userId) {
int count = lambdaQuery().eq(Cart::getUserId, userId).count();
if (count >= 10) {
throw new BizIllegalException(StrUtil.format("用户购物车课程不能超过{}", 10));
}
}
这样无疑使我们在后面如果想要去变更购物车大小的时候变得不方便,那么我们可以通过配置热更新来动态的去获取购物车的大小
读取配置类
@Data
@Component
@ConfigurationProperties(prefix = "hm.cart")
public class CartProperties {
private Integer maxAmount;
}
在nacos中定义配置
注:dataId的格式:[服务名]-[spring.active.profile].[后缀名] 其中第二个参数可以省略
我们直接与服务名相同即可

改造代码
private void checkCartsFull(Long userId) {
int count = lambdaQuery().eq(Cart::getUserId, userId).count();
if (count >= cartProperties.getMaxAmount()) {
throw new BizIllegalException(StrUtil.format("用户购物车课程不能超过{}", cartProperties.getMaxAmount()));
}
}
这样就可以实现动态获取购物车的大小

4451

被折叠的 条评论
为什么被折叠?



