您好,登錄后才能下訂單哦!
本篇文章為大家展示了springcloud中怎么將nacos作為注冊中心和配置中心,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
添加依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${latest.version}</version> </dependency>
注意:版本 0.2.x.RELEASE 對應的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 對應的是 Spring Boot 1.x 版本。
更多版本對應關系參考:版本說明 Wiki
在 bootstrap.properties
中配置 Nacos server 的地址和應用名
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=example
說明:之所以需要配置 spring.application.name
,是因為它是構成 Nacos 配置管理 dataId
字段的一部分。
在 Nacos Spring Cloud 中,dataId
的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix
默認為 spring.application.name
的值,也可以通過配置項 spring.cloud.nacos.config.prefix
來配置。
spring.profile.active
即為當前環境對應的 profile,詳情可以參考 Spring Boot文檔。 注意:當 spring.profile.active
為空時,對應的連接符 -
也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
file-exetension
為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension
來配置。目前只支持 properties
和 yaml
類型。
通過 Spring Cloud 原生注解 @RefreshScope
實現配置自動更新:
@RestController @RequestMapping("/config") @RefreshScope public class ConfigController { @Value("${useLocalCache:false}") private boolean useLocalCache; @RequestMapping("/get") public boolean get() { return useLocalCache; } }
首先通過調用 Nacos Open API 向 Nacos Server 發布配置:dataId 為example.properties
,內容為useLocalCache=true
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=true"
運行 NacosConfigApplication
,調用 curl http://localhost:8080/config/get
,返回內容是 true
。
再次調用 Nacos Open API 向 Nacos server 發布配置:dataId 為example.properties
,內容為useLocalCache=false
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=false"
再次訪問 http://localhost:8080/config/get
,此時返回內容為false
,說明程序中的useLocalCache
值已經被動態更新了。
注意事項:使用@Value注解的地方必須使用@RefreshScope
實現配置自動更新。而使用 @ConfigurationProperties 則可以實現自動更新。
添加依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>${latest.version}</version> </dependency>
注意:版本 0.2.x.RELEASE 對應的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 對應的是 Spring Boot 1.x 版本。
更多版本對應關系參考:版本說明 Wiki
配置服務提供者,從而服務提供者可以通過 Nacos 的服務注冊發現功能將其服務注冊到 Nacos server 上。
i. 在 application.properties
中配置 Nacos server 的地址:
server.port=8070 spring.application.name=service-provider spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
ii. 通過 Spring Cloud 原生注解 @EnableDiscoveryClient
開啟服務注冊發現功能:
@SpringBootApplication @EnableDiscoveryClient public class NacosProviderApplication { public static void main(String[] args) { SpringApplication.run(NacosProviderApplication.class, args); } @RestController class EchoController { @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET) public String echo(@PathVariable String string) { return "Hello Nacos Discovery " + string; } } }
配置服務消費者,從而服務消費者可以通過 Nacos 的服務注冊發現功能從 Nacos server 上獲取到它要調用的服務。
i. 在 application.properties
中配置 Nacos server 的地址:
server.port=8080 spring.application.name=service-consumer spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
ii. 通過 Spring Cloud 原生注解 @EnableDiscoveryClient
開啟服務注冊發現功能。給 RestTemplate 實例添加 @LoadBalanced
注解,開啟 @LoadBalanced
與 Ribbon 的集成:
@SpringBootApplication @EnableDiscoveryClient public class NacosConsumerApplication { @LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(NacosConsumerApplication.class, args); } @RestController public class TestController { private final RestTemplate restTemplate; @Autowired public 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); } } }
啟動 ProviderApplication
和 ConsumerApplication
,調用 http://localhost:8080/echo/2018
,返回內容為 Hello Nacos Discovery 2018
。
上述內容就是springcloud中怎么將nacos作為注冊中心和配置中心,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。