二:nacos 的服務注冊


一:怎么引用依賴

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM