spring-cloud微服务部署-feign服务间调用

1 准备工作

需要安装并启动nacos,作为服务注册中心。地址:https://nacos.io/

2 项目结构

parent的pom.xml声明依赖:

xml 复制代码
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>3.2.12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2023.0.6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2023.0.1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

2.1 服务service-a

在pom.xml中引入依赖:

xml 复制代码
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.smant.xhappy</groupId>
            <artifactId>service-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
</dependencies>

在service-a中通过feign调用service-b的hello方法:

在controller中定义调用service-b中hello方法的接口:

在启动类上开启feign接口扫描:service-a需要调用service-b的接口,要在service-a的启动类上加@EnableFeignClients 注解,也就是服务调用方要加上@EnableFeignClients注解。

在application.yml中配置nacos地址:

bash 复制代码
server:
  port: 7515
spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  application:
    name: service-a

2.2 服务service-b

和service-a的结构代码都差不多,不在赘述。

2.2 feign接口

在pom.xml引入依赖:

xml 复制代码
<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
</dependencies>

声明service-b的hello方法,给别的服务调用。

3 启动测试

启动service-a和service-b,然后请求地址:

http://localhost:7515/api/a/hello-a?msg=world

响应:A, hello world

http://localhost:7515/api/a/hello-b?msg=world

响应:B, hello world

这样一个简单的通过feign进行服务间调用的流程的就通了!!!

相关推荐
bemyrunningdog18 小时前
DTO与POJO:核心差异与最佳实践
java
en-route18 小时前
深入理解 MDC(Mapped Diagnostic Context):日志记录的利器
java·log4j
聆风吟º18 小时前
【Spring Boot 报错已解决】Web server failed to start. Port 8080 was already in use.
spring boot·笔记·技术干货
掘金-我是哪吒18 小时前
分布式微服务系统架构第170集:Kafka消费者并发-多节点消费-可扩展性
分布式·微服务·架构·kafka·系统架构
一叶飘零_sweeeet19 小时前
SpringBoot 数据脱敏实战: 构建企业级敏感信息保护体系
java·spring boot·数据安全
float_六七19 小时前
Java Stream流:从入门到精通
java·windows·python
青云交19 小时前
Java 大视界 -- 基于 Java 的大数据分布式存储在智慧城市时空大数据管理与应用中的创新实践(408)
java·hdfs·flink·智慧城市·hbase·java 分布式存储·时空大数据
赶飞机偏偏下雨19 小时前
【Java笔记】单例模式
java·笔记·单例模式
小蒜学长19 小时前
基于Spring Boot的火灾报警系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
武昌库里写JAVA19 小时前
基于Spring Boot + Vue3的办公用品申领管理系统
java·spring boot·后端