Spring boot2X Consul如何使用Feign实现服务调用
作者:慕尘 时间:2022-04-29 14:41:18
这篇文章主要介绍了spring boot2X Consul如何使用Feign实现服务调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
服务调用有两种方式:
A.使用RestTemplate 进行服务调用
B.使用Feign 进行声明式服务调用
上一次写了使用RestTemplate的方式,这次使用Feign的方式实现
服务注册发现中心使用Consul
启动Consul
consul agent -dev
spring boot 版本 2.2.1.RELEASE
1.服务端
provider
(1)添加依赖
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
(2)修改配置
server.port=8010
spring.application.name=provider
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.health-check-path=/actuator/health
spring.cloud.consul.discovery.service-name=service-provider
spring.cloud.consul.discovery.heartbeat.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
(3)测试方法
package com.xyz.provider.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class demoController {
@RequestMapping("/hello")
public String Hello(){
return "hello,provider";
}
}
provider1
修改端口为8011
修改测试方法
package com.xyz.provider1.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class demoController {
@RequestMapping("/hello")
public String Hello(){
return "hello,another provider";
}
}
启动provider和provider1
2.客户端
customer
(1)添加依赖
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR4</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
(2)配置
server.port=8015
spring.application.name=xyz-comsumer
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.register=false
spring.cloud.consul.discovery.health-check-url=/actuator/health
spring.cloud.consul.discovery.heartbeat.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
(3)修改启动类
添加注解 @EnableFeignClients,开启扫描Spring Cloud Feign客户端的功能
package com.xyz.comsumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@EnableFeignClients
@SpringBootApplication
public class ComsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ComsumerApplication.class, args);
}
}
(4)添加Feign接口
添加注解@FeignClient(name = "provider")
provider是要调用的服务名
说明:
添加跟调用目标方法一样的方法声明,必须跟目标方法的定义一致
package com.xyz.consumer.controller;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "provider")
public interface ProviderService {
@RequestMapping("/hello")
public String hello();
}
(4)服务调用
注入刚才声明的ProviderService,就可以像本地方法一样进行调用了
package com.xyz.consumer.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FeignController {
@Autowired
private ProviderService providerService;
@RequestMapping("/call")
public String call() {
return providerService.hello();
}
}
启动customer
访问http://localhost:8015/call
交替返回结果
hello,provider 或 hello,another provider
来源:https://www.cnblogs.com/baby123/p/11964567.html
标签:spring,boot,consul,feign,服务,调用
0
投稿
猜你喜欢
Java日常练习题,每天进步一点点(51)
2022-07-03 14:40:12
Android DataBinding的官方双向绑定示例
2023-09-15 04:39:27
安卓11适配攻略抢先看
2022-05-22 22:39:05
浅析Java自定义注解的用法
2022-06-08 01:52:58
Android自定义ImageView实现自动放大缩小动画
2021-11-07 12:24:48
浅谈c#开发者应该了解的15个特性
2022-03-02 17:14:32
java操作Apache druid的实例代码
2023-12-24 02:10:58
C#备忘录人生存档的设计模式实例
2022-06-15 12:40:38
Android 根据手势顶部View自动展示与隐藏效果
2022-01-11 07:30:20
mybatis-plus 扩展批量新增的实现
2023-07-14 14:24:13
SpringBoot和Vue.js实现的前后端分离的用户权限管理系统
2023-09-03 14:37:33
Android 自定义按钮点击事件和长按事件对比
2023-06-04 00:57:14
Android下拉列表选项框及指示箭头动画
2022-09-28 04:08:15
Android屏幕旋转 处理Activity与AsyncTask的最佳解决方案
2023-03-22 07:02:50
Spring IOC与DI核心重点分析
2023-11-12 14:35:55
SpringMVC 向jsp页面传递数据库读取到的值方法
2022-03-29 00:51:15
C# 委托的三种调用示例(同步调用 异步调用 异步回调)
2023-06-09 10:29:56
Android 大文件切割与合并的实现代码
2023-05-25 21:58:58
Spring Data JPA 复杂/多条件组合分页查询
2021-09-06 02:57:55
java实现的新浪微博分享代码实例
2023-07-06 08:33:13