吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1355|回复: 4
收起左侧

[学习记录] SpringCloud学习心得---使用 Feign 实现远程方法声明式调用

[复制链接]
zyt温柔发 发表于 2022-2-17 15:50
7.1分析
01.png
7.2操作
    7.2.1 common 工程
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

创建远程调用方法的接口:
[Java] 纯文本查看 复制代码
@FeignClient("study-provider")
public interface EmployeeRemoteService {
    @RequestMapping("/provider/get/employee/remote")
    public Employee getEmployeeRemote();
}

    7.2.2 新建 Feign-consumer 工程
feign-consumer.png
加入如下依赖:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.study.spring.cloud</groupId>
<artifactId>spring-cloud-study-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>


主启动类com.study.spring.cloud.AtzytMainType:
[Asm] 纯文本查看 复制代码
// 启用 Feign 客户端功能
@EnableFeignClients
@SpringBootApplication
public class AtzytMainType {
    public static void main(String[] args) {
        SpringApplication.run(AtzytMainType.class, args);
    }
}

application.yml:

server:
port: 7000
spring:
application:
name: study-feign-consumer
eureka:
client:
service-url:
defaultZone: http://localhost:5000/eureka


handler 类com.study.spring.cloud.hander.EmployeeFeignHander:
[Java] 纯文本查看 复制代码
@RestController
public class EmployeeFeignHander {
    @Autowired
    private EmployeeRemoteService employeeRemoteService;
    @RequestMapping("/feign/consumer/get/emp")
    public Employee getEmployeeRemote() {
        return employeeRemoteService.getEmployeeRemote();
    }
}

测试:

feign-consumer测试

feign-consumer测试

7.3传参测试
接口写法:
[Java] 纯文本查看 复制代码
    @RequestMapping("/provider/get/employee/by/id")
    public Employee getEmployeeById(@RequestParam("empId") Integer empId);

provider 的 handler 方法必须与接口方法声明一致:
[Java] 纯文本查看 复制代码
    @RequestMapping("/provider/get/employee/by/id")
    public Employee getEmployeeById(@RequestParam("empId") Integer empId) {
        return new Employee(empId, "tom999-", 999.99);
    }

测试效果:

测试效果

测试效果

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lvbuqing 发表于 2022-2-17 16:14
鉴权呢?token呢?接口都不校验一下子?
10086abc 发表于 2022-2-17 16:30
努力的小七 发表于 2022-2-17 20:08
Allen·Greene 发表于 2022-3-17 14:02
lvbuqing 发表于 2022-2-17 16:14
鉴权呢?token呢?接口都不校验一下子?

用这个一般是内部服务之间的调用,中台网关服务等,我不清楚别人,我用rpc调用很少做鉴权和token,除非是对接第三方服务接口
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表