【Java】SpringCloud声明式Feign客户端调用工具
SpringCloud声明式Feign客户端调用工具
isWulongbo发布于 今天 01:59
前言
springcloud 支持两种客户端调用工具:
- RestTemplate,基本上不使用
- 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客户端权限
}
注:启动类位置要放正确
启动 Eureka Server服务,启动 member provide 服务,启动 order consumer 服务后访问:http://localhost:8200/getFeignOrder
javaspringboot
阅读 30更新于 今天 02:03
本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
isWulongbo
在人生的头三十年,你培养习惯,后三十年,习惯铸就你
178 声望
8 粉丝
isWulongbo
在人生的头三十年,你培养习惯,后三十年,习惯铸就你
178 声望
8 粉丝
宣传栏
前言
springcloud 支持两种客户端调用工具:
- RestTemplate,基本上不使用
- 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客户端权限
}
注:启动类位置要放正确
启动 Eureka Server服务,启动 member provide 服务,启动 order consumer 服务后访问:http://localhost:8200/getFeignOrder
以上是 【Java】SpringCloud声明式Feign客户端调用工具 的全部内容, 来源链接: utcz.com/a/106259.html
得票时间