一:怎么引用依賴
dependencyManagement:spring cloud alibaba 的版本,由於spring cloud alibaba 還未納入spring cloud 的主版本管理中,所以需要自己加入。
我們在Parent 項目中引入Spring Cloud:
Spring Cloud Alibaba 項目都是基於 Spring Cloud,而 Spring Cloud 項目又是基於 Spring Boot 進行開發,並且都是使用 Maven 做項目管理工具。在實際開發中,我們一般都會創建一個依賴管理項目作為 Maven 的 Parent 項目使用,這樣做可以極大的方便我們對 Jar 包版本的統一管理。
具體的版本介紹請下如下配置:
Spring Cloud Finchley 是較老一個版本,對應springboot 2.0.x
最開始這樣加載依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>0.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
升級后:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.0.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
Spring Cloud Greenwich 是較新一個版本,對應對應springboot 2.1.x
最開始這樣加載依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>0.9.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
升級后:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
dependencies:當前應用要使用的依賴內容。這里主要新加入了 Nacos 的服務注冊與發現模塊:spring-cloud-starter-alibaba-nacos-discovery。由於 dependencyManagement 中已經引入了版本,這里就不用指定具體版本了。
服務提供者,添加如下依賴:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
nacos的配置中心,添加如下依賴:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
配置:
Spring Boot 配置文件的加載順序,其中 bootstrap.properties 配置為最高優先級:
依次為 bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
首先在 bootstrap.yml 文件里,進行nacos的配置拉取:
示例:
spring:
application:
name: ace-admin
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
profiles:
active: dev
服務注冊地址:
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 192.168.233.150:8848
server:
port: 8082
management:
endpoints:
web:
exposure:
include: "*"
user:
name: caps
入口函數添加注解:@EnableDiscoveryClient
在項目中找一個 Controller ,增加一個請求方法,測試配置更新效果
// 注入配置文件上下文 @Autowired private ConfigurableApplicationContext applicationContext; // 從上下文中讀取配置 @GetMapping(value = "/hi") public String sayHi() { return "Hello " + applicationContext.getEnvironment().getProperty("user.name"); }
使用 FeignClient 優化調用服務
首先在pom.xml中添加FeignClient引用
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.1.3.RELEASE</version> </dependency>
通過 Spring Cloud 原生注解 @EnableFeignClients 開啟
編寫遠程服務調用接口
package com.ichochy.nacos.service; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @FeignClient(value = "service-provider") public interface ServiceInterface { @RequestMapping("/service/echo/{name}") public String echo(@PathVariable String name); }
遠程調用服務
package com.ichochy.nacos.controller; import com.ichochy.nacos.service.ServiceInterface; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController @RequestMapping("/result") public class ResultController { @Autowired private ServiceInterface serviceInterface; @RequestMapping("feignClient/{name}") public String feignClient(@PathVariable String name){ return serviceInterface.echo(name); } }
訪問地址:http://127.0.0.1:8080/result/feignClient/ichochy
參考資料:
https://www.cnblogs.com/faramita/p/11340475.html