一,nacos的配置中心的简单使用。
如果一点都不会,建议先看一下这一片文章http://t.csdnimg.cn/nHccF
二,命名空间实现配置隔离。
在开发中,常常不止一个微服务,每一个微服务也通常不止一个配置文件,在这种情况下,我们就需要使用命名空间来帮助我们进行管理。
想象一个场景:
我当前有优惠券(模块)微服务,会员(模块)微服务等多个微服务,我们需要让微服务之间的配置文件分开进行管理,而这个命名空间就是帮我们做这件事的。每个命名空间,存放不同的微服务(模块)所需要的配置
。
在注册中心创建命名空间,用于存放不同服务的配置:
创建完之后我们可以看到我们创建的命名空间
三,组(Group)
我们在开发过程中,通常有开发环境,测试环境,生产环境等,在开发环境中,我们需要用到哪些配置文件呢?在测试环境中,我们又需要用到哪些配置文件呢?我们可以使用分组来进行区分。
结合上面的命名空间来说:在coupon命名空间中存放的全都是coupon模块的配置文件,在member命名空间中存放的全都是member模块的配置文件。而coupon模块需要开发,生成,运行等环境的配置文件,又再次进行粒度上的细分,当然member模块也需要开发,生成,运行等环境的配置文件。
选择member命名空间,member命名空间下创建配置文件
创建member模块下的开发环境的配置文件
照此,依次创建测试环境,生成环境下的配置文件。
同理,我们在coupon命名空间下创建coupon模块的配置文件
四,微服务模块中的配置
1.member模块的配置
1)bootstrap.yaml
spring:
application:
name: gulimall-member
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
#这里表示去45f90137-aa87-4fc3-8665-9ca96bd9b3ad这个命名空间,读取dev组的 gulimall-member.yaml配置文件
file-extension: yaml # 配置文件类型
namespace: 45f90137-aa87-4fc3-8665-9ca96bd9b3ad # namespace不写时去默认名称空间获取
group: prod # group不写时去默认组获取
# prefix: gulimall-member # 表示读取哪个配置文件?不写时默认使用${spring.application.name}
2)application.yaml
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
application:
name: gulimall-member
2.member模块读取配置文件测试
@RefreshScope
@RestController
@RequestMapping("menber/member")
public class MemberController {
@Value("${myconfig.description}")
private String description;
@GetMapping("test")
public R test(){
return R.ok().put("msg","description:"+description);
}
}
启动member模块,测试成功!
修改为读取dev开发环境的配置文件:(只修改bootstrap.yaml的group即可切换)
重启模块,测试,读取成功!
五,加载多配置集
项目中,我们通常会引入很多框架,这些框架可能需要配置自己的配置文件,比如mybatis的,datasource的等,这些配置放在同一个application下不太便于管理,比较混乱,我们可以使用加载多配置集来加载这些扩展的配置
。
1.在注册中心新建配置
2.配置bootstrap.yaml
spring:
application:
name: gulimall-member
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
#这里表示去45f90137-aa87-4fc3-8665-9ca96bd9b3ad这个命名空间,读取dev组的 gulimall-member.yaml配置文件
file-extension: yaml # 配置文件类型
namespace: 45f90137-aa87-4fc3-8665-9ca96bd9b3ad # namespace不写时去默认名称空间获取
group: dev # group不写时去默认组获取
# prefix: gulimall-member # 表示读取哪个配置文件?不写时默认使用${spring.application.name}
# 加载扩展配置集
ext-config[0]:
data-id: datasource.yaml
group: dev
refresh: true #动态刷新,默认是false
ext-config[1]:
data-id: mybatis-plus.yaml
group: dev
refresh: true