前言
隨着eureka的停止更新,如果同時實現注冊中心和配置中心需要SpringCloud Eureka和SpringCloud Config兩個組件;配置修改刷新時需要SpringCloud Bus消息總線發出消息通知(Kafka、RabbitMQ等)到各個服務完成配置動態更新,否者只有重啟各個微服務實例,但是nacos可以同時實現注冊和配置中心,以及配置的動態更新。
版本聲明
Nacos Server: 1.3.2
SpringBoot: 2.3.0.RELEASE
SpringCloud: Hoxton.SR5
SpringCloud Alibaba: 2.2.1.RELEASE
項目實戰
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配置文件名
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配置並覆蓋
SpringBoot讀取配置文件順序:bootstrap.yml>bootstrap.yaml>bootstrap.properties>nacos的配置>application.yml>application.yaml>application.properties
3.添加接口讀取配置信息並添加動態刷新配置的注解@RefreshScope
@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。未完待續...