Nacos除了可以作爲服務註冊中心,它還有服務配置中心的功能。類似於consul config,Nacos 是支持熱加載的。
在篇一的基礎繼續使用nacos作爲配置中心
引入依賴
- 在需要統一管理配置的項目中添加對應依賴
<!-- nacos 配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
- 項目中添加bootstrap配置文件(同樣是支持properties和yml格式的),這裏對應配置中心的配置必須是bootstrap,可以參考bootstrap與application配置文件的區別
#應用名稱
spring.application.name=love-service-master
#服務器地址
server=127.0.0.1
#分組
group=DEV_GROUP
# Nacos 服務中心和配置中心地址
spring.cloud.nacos.discovery.server-addr=${server}:8848
spring.cloud.nacos.config.server-addr=${server}:8848
#需要加載外部配置,必須寫在bootstrap中
## Nacos 配置中心獲取配置文件 座標
spring.cloud.nacos.config.group=${group}
spring.cloud.nacos.config.prefix=love-service
spring.profiles.active=master
spring.cloud.nacos.config.file-extension=properties
這裏沒有配置應用端口號,類似於這種具體應用的配置,稍後都寫到配置中心對應的配置文件中
- nacos配置中心,添加編輯配置與bootstrap中對應座標一致
新建配置
- 熱加載
寫一個Controller,在Controller上添加 @RefreshScope 實現配置的熱加載,先到上述配置中修改配置,添加username屬性
@Controller
@RefreshScope
public class ConfigController {
@Value("${username}")
private String username;
@ResponseBody
@RequestMapping("/getUsername")
public String get() {
return username;
}
}
啓動工程,在瀏覽器上訪問localhost:8888/getUsername,可以返回在nacos控制檯上配置的username。在nacos 網頁上更改username的配置,在不重啓工程的情況下,重新訪問localhost:8888/getUsername,返回的事修改後的值,可見nacos作爲配置中心實現了熱加載功能。