javascript
Nacos(七)之Spring Cloud集成
轉(zhuǎn)載自 Nacos Spring Cloud 快速開(kāi)始
本文主要面向?Spring Cloud?的使用者,通過(guò)兩個(gè)示例來(lái)介紹如何使用 Nacos 來(lái)實(shí)現(xiàn)分布式環(huán)境下的配置管理和服務(wù)注冊(cè)發(fā)現(xiàn)。
關(guān)于 Nacos Spring Cloud 的詳細(xì)文檔請(qǐng)參看:Nacos Config?和?Nacos Discovery。
- 通過(guò) Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實(shí)現(xiàn)配置的動(dòng)態(tài)變更。
- 通過(guò) Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn)。
前提條件
您需要先下載 Nacos 并啟動(dòng) Nacos server。操作步驟參見(jiàn)?Nacos 快速入門(mén)
啟動(dòng)配置管理
啟動(dòng)了 Nacos server 后,您就可以參考以下示例代碼,為您的 Spring Cloud 應(yīng)用啟動(dòng) Nacos 配置管理服務(wù)了。完整示例代碼請(qǐng)參考:nacos-spring-cloud-config-example
注意:版本?2.1.x.RELEASE?對(duì)應(yīng)的是 Spring Boot 2.1.x 版本。版本?2.0.x.RELEASE?對(duì)應(yīng)的是 Spring Boot 2.0.x 版本,版本?1.5.x.RELEASE?對(duì)應(yīng)的是 Spring Boot 1.5.x 版本。
更多版本對(duì)應(yīng)關(guān)系參考:版本說(shuō)明 Wiki
說(shuō)明:之所以需要配置?spring.application.name?,是因?yàn)樗菢?gòu)成 Nacos 配置管理?dataId字段的一部分。
在 Nacos Spring Cloud 中,dataId?的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}- prefix?默認(rèn)為?spring.application.name?的值,也可以通過(guò)配置項(xiàng)?spring.cloud.nacos.config.prefix來(lái)配置。
- spring.profiles.active?即為當(dāng)前環(huán)境對(duì)應(yīng)的 profile,詳情可以參考?Spring Boot文檔。?注意:當(dāng)?spring.profiles.active?為空時(shí),對(duì)應(yīng)的連接符?-?也將不存在,dataId 的拼接格式變成?${prefix}.${file-extension}
- file-exetension?為配置內(nèi)容的數(shù)據(jù)格式,可以通過(guò)配置項(xiàng)?spring.cloud.nacos.config.file-extension?來(lái)配置。目前只支持?properties?和?yaml?類(lèi)型。
運(yùn)行?NacosConfigApplication,調(diào)用?curl http://localhost:8080/config/get,返回內(nèi)容是?true。
再次調(diào)用?Nacos Open API?向 Nacos server 發(fā)布配置:dataId 為example.properties,內(nèi)容為useLocalCache=false
啟動(dòng)服務(wù)發(fā)現(xiàn)
本節(jié)通過(guò)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的?echo service?演示如何在您的 Spring Cloud 項(xiàng)目中啟用 Nacos 的服務(wù)發(fā)現(xiàn)功能,如下圖示:
完整示例代碼請(qǐng)參考:nacos-spring-cloud-discovery-example
注意:版本?2.1.x.RELEASE?對(duì)應(yīng)的是 Spring Boot 2.1.x 版本。版本?2.0.x.RELEASE?對(duì)應(yīng)的是 Spring Boot 2.0.x 版本,版本?1.5.x.RELEASE?對(duì)應(yīng)的是 Spring Boot 1.5.x 版本。
更多版本對(duì)應(yīng)關(guān)系參考:版本說(shuō)明 Wiki
i. 在?application.properties?中配置 Nacos server 的地址:
server.port=8070 spring.application.name=service-providerspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848ii. 通過(guò) Spring Cloud 原生注解?@EnableDiscoveryClient?開(kāi)啟服務(wù)注冊(cè)發(fā)現(xiàn)功能:
@SpringBootApplication @EnableDiscoveryClient public class NacosProviderApplication {public static void main(String[] args) {SpringApplication.run(NacosProviderApplication.class, args);}@RestControllerclass EchoController {@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)public String echo(@PathVariable String string) {return "Hello Nacos Discovery " + string;}} }i. 在?application.properties?中配置 Nacos server 的地址:
server.port=8080 spring.application.name=service-consumerspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848ii. 通過(guò) Spring Cloud 原生注解?@EnableDiscoveryClient?開(kāi)啟服務(wù)注冊(cè)發(fā)現(xiàn)功能。給?RestTemplate?實(shí)例添加?@LoadBalanced?注解,開(kāi)啟?@LoadBalanced?與?Ribbon?的集成:
@SpringBootApplication @EnableDiscoveryClient public class NacosConsumerApplication {@LoadBalanced@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(NacosConsumerApplication.class, args);}@RestControllerpublic class TestController {private final RestTemplate restTemplate;@Autowiredpublic TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)public String echo(@PathVariable String str) {return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);}} }相關(guān)項(xiàng)目
- Nacos
- Nacos Spring
- Nacos Spring Boot
- Spring Cloud Alibaba
總結(jié)
以上是生活随笔為你收集整理的Nacos(七)之Spring Cloud集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 雪的密度多少
- 下一篇: Dubbo(二)之SpringBoot