【Java】SpringCloud声明式Feign客户端调用工具

SpringCloud声明式Feign客户端调用工具

isWulongbo发布于 今天 01:59

前言

springcloud 支持两种客户端调用工具:

  1. RestTemplate,基本上不使用
  2. Feign,采用接口加注解方式,可读性较强

注:本來打算继续使用 consul 作为注册中心来进行 Feign 客户端调用的,provide 配置如下,无奈一直调用不到 注册上来的服务名,只好改用 Eureka 来使用,如有知道原因请指教!

##服务端口号

server:

port: 8501

spring:

application:

##服务别名--服务注册到consul名称

name: consul-member

##注册中心consul地址

cloud:

consul:

host: localhost

port: 8500

discovery:

service-name: ${spring.application.name} # 服务提供名称

# ## consul ip地址

# hostname: 192.168.3.91

Eureka Feign客户端调用

这里我们基于 SpringCloud整合之Eureka高可用集群 项目来展示。
provide 我们不需要做任何修改,只需要在 consumer order模块加入以下依赖:

<!--springcloud 整合openfeign-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

feign 调用接口

MemberApiFeign.java: @FeignClient指定provide服务别名,接口copy调用即可:

package com.baba.wlb.api.feign;

import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.RequestMapping;

/**

* @Author wulongbo

* @Date 2021/1/21 19:17

* @Version 1.0

*/

@FeignClient(name = "app-member")

public interface MemberApiFeign {

// Feign 书写方式以springMVC接口形式书写

// @FeignClient调用服务接口name就是服务名称

@RequestMapping("/getMember")

String getMember();

}

控制页面

AppFeignController.java: 注入 Feign 接口

package com.baba.wlb.api.controller;

import com.baba.wlb.api.feign.MemberApiFeign;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**

* @Author wulongbo

* @Date 2021/1/21 19:21

* @Version 1.0

*/

@RestController

public class AppFeignController {

@Autowired

private MemberApiFeign memberApiFeign;

@RequestMapping("/getFeignOrder")

public String getFeignOrder() {

return memberApiFeign.getMember();

}

}

启动类

AppOrder启动类:添加 @EnableFeignClients 开启Feign客户端权限

package com.baba.wlb;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;

import org.springframework.cloud.openfeign.EnableFeignClients;

import org.springframework.context.annotation.Bean;

import org.springframework.web.client.RestTemplate;

/**

* @Author wulongbo

* @Date 2021/1/9 15:39

* @Version 1.0

*/@SpringBootApplication

@EnableDiscoveryClient

@EnableFeignClients

public class AppOrder {

public static void main(String[] args) {

SpringApplication.run(AppOrder.class, args);

// 第二种方式 如果使用rest方式以别名方式进行调用依赖ribbon负载均衡器

// 第二种方式 @LoadBalanced能让restTemplate 模板在请求时拥有客户端负载均衡的能力

}

// 解决RestTemplate 找不到原因, 把RestTemplate注册到Springboot容器中 @Bean

// 第一种方式

// @Bean

// RestTemplate restTemplate(){

// return new RestTemplate();

// }

// 第二种方式 @LoadBalanced能让restTemplate 模板在请求时拥有客户端负载均衡的能力

// @Bean

// @LoadBalanced

// RestTemplate restTemplate() {

// return new RestTemplate();

// }

// @EnableFeignClients 开启Feign客户端权限

}

注:启动类位置要放正确
【Java】SpringCloud声明式Feign客户端调用工具

启动 Eureka Server服务,启动 member provide 服务,启动 order consumer 服务后访问:http://localhost:8200/getFeignOrder

【Java】SpringCloud声明式Feign客户端调用工具

javaspringboot

阅读 30更新于 今天 02:03

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议


wulongbo

我的专栏

avatar

isWulongbo

在人生的头三十年,你培养习惯,后三十年,习惯铸就你

178 声望

8 粉丝

0 条评论

得票时间

avatar

isWulongbo

在人生的头三十年,你培养习惯,后三十年,习惯铸就你

178 声望

8 粉丝

宣传栏

前言

springcloud 支持两种客户端调用工具:

  1. RestTemplate,基本上不使用
  2. Feign,采用接口加注解方式,可读性较强

注:本來打算继续使用 consul 作为注册中心来进行 Feign 客户端调用的,provide 配置如下,无奈一直调用不到 注册上来的服务名,只好改用 Eureka 来使用,如有知道原因请指教!

##服务端口号

server:

port: 8501

spring:

application:

##服务别名--服务注册到consul名称

name: consul-member

##注册中心consul地址

cloud:

consul:

host: localhost

port: 8500

discovery:

service-name: ${spring.application.name} # 服务提供名称

# ## consul ip地址

# hostname: 192.168.3.91

Eureka Feign客户端调用

这里我们基于 SpringCloud整合之Eureka高可用集群 项目来展示。
provide 我们不需要做任何修改,只需要在 consumer order模块加入以下依赖:

<!--springcloud 整合openfeign-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

feign 调用接口

MemberApiFeign.java: @FeignClient指定provide服务别名,接口copy调用即可:

package com.baba.wlb.api.feign;

import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.RequestMapping;

/**

* @Author wulongbo

* @Date 2021/1/21 19:17

* @Version 1.0

*/

@FeignClient(name = "app-member")

public interface MemberApiFeign {

// Feign 书写方式以springMVC接口形式书写

// @FeignClient调用服务接口name就是服务名称

@RequestMapping("/getMember")

String getMember();

}

控制页面

AppFeignController.java: 注入 Feign 接口

package com.baba.wlb.api.controller;

import com.baba.wlb.api.feign.MemberApiFeign;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**

* @Author wulongbo

* @Date 2021/1/21 19:21

* @Version 1.0

*/

@RestController

public class AppFeignController {

@Autowired

private MemberApiFeign memberApiFeign;

@RequestMapping("/getFeignOrder")

public String getFeignOrder() {

return memberApiFeign.getMember();

}

}

启动类

AppOrder启动类:添加 @EnableFeignClients 开启Feign客户端权限

package com.baba.wlb;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;

import org.springframework.cloud.openfeign.EnableFeignClients;

import org.springframework.context.annotation.Bean;

import org.springframework.web.client.RestTemplate;

/**

* @Author wulongbo

* @Date 2021/1/9 15:39

* @Version 1.0

*/@SpringBootApplication

@EnableDiscoveryClient

@EnableFeignClients

public class AppOrder {

public static void main(String[] args) {

SpringApplication.run(AppOrder.class, args);

// 第二种方式 如果使用rest方式以别名方式进行调用依赖ribbon负载均衡器

// 第二种方式 @LoadBalanced能让restTemplate 模板在请求时拥有客户端负载均衡的能力

}

// 解决RestTemplate 找不到原因, 把RestTemplate注册到Springboot容器中 @Bean

// 第一种方式

// @Bean

// RestTemplate restTemplate(){

// return new RestTemplate();

// }

// 第二种方式 @LoadBalanced能让restTemplate 模板在请求时拥有客户端负载均衡的能力

// @Bean

// @LoadBalanced

// RestTemplate restTemplate() {

// return new RestTemplate();

// }

// @EnableFeignClients 开启Feign客户端权限

}

注:启动类位置要放正确
【Java】SpringCloud声明式Feign客户端调用工具

启动 Eureka Server服务,启动 member provide 服务,启动 order consumer 服务后访问:http://localhost:8200/getFeignOrder

【Java】SpringCloud声明式Feign客户端调用工具

以上是 【Java】SpringCloud声明式Feign客户端调用工具 的全部内容, 来源链接: utcz.com/a/106259.html

回到顶部