目錄
一、Nacos統一配置管理
二、配置自動重新整理
方式一:在@Value注入的變量所在類上添加注解@RefreshScope
方式二:使用@ConfigurationProperties注解
三、多環境配置共享
三、多服務共享配置
一、Nacos統一配置管理
1、在Nacos同添加配置檔案
2、在微服務中引入Nacos的配置管理用戶端依賴:
<!--nacos的配置管理依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
3、在userservice中的resource目錄添加一個bootstrap.yml檔案,這個檔案是引導檔案,優先級高于application.yml:
spring:
application:
name: userservice
profiles:
active: dev #環境
cloud:
nacos:
server-addr: localhost:80 # nacos位址
config:
file-extension: yaml # 檔案字尾名
4、在user-service中将pattern.dateformat這個屬性注入到UserController中做測試:
@RestController
@RequestMapping("/user")
public class UserController {
//注入nacos中的配置屬性
@Value("${pattern.dateformat}")
private String dateformat;
//編寫controller,通過日期格式化器來格式化現在的時間并傳回
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));
}
//...略
}
二、配置自動重新整理
Nacos中的配置檔案變更後,微服務無需重新開機就可以感覺,不過需要通過下面兩種配置實作:
方式一:在@Value注入的變量所在類上添加注解@RefreshScope
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
//注入nacos中的配置屬性
@Value("${pattern.dateformat}")
private String dateformat;
方式二:使用@ConfigurationProperties注解
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
}
注意事項:
不是多有的配置都适合放到配置中心,維護起來比較麻煩
建議将一些關鍵參數,需要運作時調整的參數放在nacos
三、多環境配置共享
微服務啟動時會從nacos讀取多個配置檔案:
[spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml
[spring.appliction.name].yaml,例如:userservice.yaml
無論profile如何,[spring.appliction.name].yaml這個檔案一定會加載,是以多環境共享配置可以寫入這個檔案
多種配置的優先級:
三、多服務共享配置
不同微服務之間可以共享配置檔案,通過下面的兩種方式來指定
方式一:
spring:
application:
name: userservice
profiles:
active: dev #環境
cloud:
nacos:
server-addr: localhost:80 # nacos位址
config:
file-extension: yaml # 檔案字尾名
shared-configs: # 多服務間共享的配置清單
-datald: common.yaml # 要共享的配置檔案id
spring:
application:
name: userservice
profiles:
active: dev #環境
cloud:
nacos:
server-addr: localhost:80 # nacos位址
config:
file-extension: yaml # 檔案字尾名
extends-configs: # 多服務間共享的配置清單
-datald: extend.yaml # 要共享的配置檔案id