OpenFeign 的使用

OpenFeign 的使用

一、服务端代码:服务端无需引入oenfeign,只需提供rest api接口;

// AssetsController.java
@GetMapping("/getAssets")
public HttpResult getAssets(@RequestParam("id") int id) {
    
    
	return assetsService.getAssets(id);
}
// AssetsService.java
HttpResult<AssetsVo> getAssets(int id);
// AssetsServiceImpl.java
public HttpResult getAssets(int id) {
    
    
	AssetsInfo assets = assetsInfoMapper.selectById(id);
	System.out.println(assets);
    return HttpResult.OK(assets);
	// return HttpResult.OK("SUCCESS!!!");
}

二、客户端需要做以下操作,引入openfeign:

1、引入pom依赖

<dependencies>   
	<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

2、启动类加上注解:@EnableFeignClients

package com.unicom;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableFeignClients
public class JobExecutorApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(JobExecutorApplication.class, args);
    }

}

3、创建openfeign客户端:AssetsClient.java

package com.unicom.executor.feign.assets;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * name: 指定调用rest接口所对应的服务名
 * url: 指定接口地址和端口号
 * path: 指定调用rest接口所在的AssetsController调用路径
 */
@FeignClient(name = "demo", url = "localhost:8080", path = "/demo/assets")
public interface AssetsClient {
    
    

    /**
     * 声明需要调用的rest接口对应的方法,getAssets()
     */
    @GetMapping("/getAssets")
    String getAssets(@RequestParam("id") int id);

}

4、通过AssetsClient客户端,调用getAssets()方法:

package com.unicom.executor.controller;

import com.unicom.executor.feign.assets.AssetsClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/executor")
@Api(tags = "执行器")
public class ExecutorController {
    
    

    @Autowired
    private AssetsClient assetsClient;

    @ApiOperation("feign查询单个资产")
    @GetMapping("/getAssets")
    public String getStudent(@RequestParam("id") int id) {
    
    
        // 像调用本地方法一样调用远程方法(其实很垃圾,封装方法不是写在了AssetsClient里吗,只是看起来?)
        String result = assetsClient.getAssets(2);
        return "Hello" + result;
    }

}

至此所有配置结束,调用成功!

http://localhost:8088/executor/executor/getAssets?id=2
Hello{"code":0,"msg":"操作成功","data":"SUCCESS!!!","ok":true}

猜你喜欢

转载自blog.csdn.net/qq_33867131/article/details/129039537