随着eureka的中止更新,若是同时实现注册中心和配置中心须要SpringCloud Eureka和SpringCloud Config两个组件;配置修改刷新时须要SpringCloud Bus消息总线发出消息通知(Kafka、RabbitMQ等)到各个服务完成配置动态更新,否者只有重启各个微服务实例,可是nacos能够同时实现注册和配置中心,以及配置的动态更新。git
Nacos Server: 1.3.2github
SpringBoot: 2.3.0.RELEASEspring
SpringCloud: Hoxton.SR5bootstrap
SpringCloud Alibaba: 2.2.1.RELEASEapp
1.youlai-auth添加nacos-config依赖微服务
<!-- nacos-config 依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
2.项目配置文件bootstrap.yml指定nacos配置文件名ui
spring: application: name: youlai-auth cloud: nacos: discovery: server-addr: http://localhost:8848 config: file-extension: yaml # 必须修改为yaml group: DEFAULT_GROUP # 缺省便可 prefix: ${spring.application.name} # 缺省便可 rsa: publicKey: 123456
注意这里使用bootstrap.yml而非application.yml,避免applicaton.yml后加载于nacos配置并覆盖this
SpringBoot读取配置文件顺序:bootstrap.yml>bootstrap.yaml>bootstrap.properties>nacos的配置>application.yml>application.yaml>application.propertiescode
3.添加接口读取配置信息并添加动态刷新配置的注解@RefreshScopeserver
@RefreshScope @RestController @RequestMapping("/oauth") public class AuthController { @Value("${rsa.publicKey}") public String publicKey; @GetMapping("/publicKey") public Result getPublicKey(){ return Result.success(this.publicKey); } }
4.打开nacos管理控制台添加配置
DATA-ID : ${prefix}-${spring.profiles.active}.${file-extension}
a). prefix 默认spring.application.name 的值,也能够经过配置项 spring.cloud.nacos.config.prefix来配置 b). file-extension默认properties,好比我这里使用的是yaml,那么更改spring.cloud.nacos.config.file-extension= yaml c). Group默认DEFAULT_GROUP,也能够经过配置项 spring.cloud.nacos.config.group来配置
5.启动服务后第一次读取配置信息
6.再次请求接口获取配置信息
能够看到经过接口第二次获取配置信息已变动,完成配置信息的动态刷新
至此youlai-auth模块整合nacos配置中心完成了,是否是相较于eureka整合SpringCloud Config方便了不少,完整代码地址在https://github.com/hxrui/youlai/tree/nacos。未完待续...