其他分享
首页 > 其他分享> > Fegin Client-入门小试

Fegin Client-入门小试

作者:互联网

Fegin Client-入门小试

文章目录

1 接口提供者

1.1 配置 :pom.yml 和 bootstrap.yml

1) pom.xml 添加以下依赖

artifactId说明版本
spring-cloud-starter-alibaba-nacos-discoverynacos注册中心依赖包
spring-boot-starter-actuator监控检查
spring-cloud-starter-alibaba-nacos-confignacos配置中心依赖支持
spring-cloud-dependenciesSpring Cloud beginGreenwich.SR2
spring-cloud-alibaba-dependenciesSpring Cloud Alibaba begin2.1.0.RELEASE

2) bootstrap.yml

server:
  port: 9005
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/myqx?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: 1234
  application:
    name: itcast-map
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848

1.2 提供接口

@Autowired
private UserInfoService userInfoService;

@GetMapping("/get")
public List<UserInfo> findAll() {
    List<UserInfo> result = userInfoService.findAll();
    return result;
}

这里只暴露了配置和接口,细节上就是CURD的简单接口实现,不必关注,知道调通了就行

2 服务调用者

2.1 配置 :pom.yml 和 bootstrap.yml

相比服务提供者不需要业务依赖项,如mybatis-plus、mysql等,同样需要nacos注册中心依赖包、监控检查、nacos配置中心依赖,需要添加远程调用和Feign依赖。

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!-- Spring Cloud 版本信息 -->
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
        <!--  Spring Cloud Alibaba 版本信息 -->
        <spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version>
</properties>
<!-- 父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <dependencies>
        <!-- Spring Cloud begin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- Spring Cloud end-->
        <!-- Spring Cloud Alibaba begin-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring.cloud.alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- Spring Cloud Alibaba end -->
    </dependencies>
</dependencyManagement>

<dependencies>
    <!--SpringMVC-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--工具包-->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    <!-- lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.10</version>
        <scope>provided</scope>
    </dependency>
    <!-- restTemplate 远程调用 -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.5</version>
    </dependency>
     <!-- nacos注册中心依赖包 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- 监控检查-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- nacos配置中心依赖支持 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

    <!-- feign调用 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

2) bootstrap.yml

server:
  port: 9013

spring:
  application:
    name: itcast-nacos
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848

2.2 启动类

在启动类上需要添加@SpringBootApplication、@EnableDiscoveryClient、@EnableFeignClients

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients    // 开启远程调用
public class NacosApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosApplication.class, args);
    }

}

2.3 接口

与接口调用者在Controller写接口不一样的是,服务调用者是创建接口类的方式使用@FeignClien注解实现

@FeignClient(value = "itcast-map",fallback = UserHystrix.class)
public interface UserFegin {

    @GetMapping("user/get")
    public List<UserInfo> findAll();
}

2.4 容错处理类

@Component
public class UserHystrix implements UserFegin {
@Override
public List<UserInfo> findAll() {
    return null;
	}
}

2.5 UserController

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private UserFegin userFegin;

    /**
     * 参数
     * @return
     */
    @GetMapping("/test006")
    public String feignClien() {
        List<UserInfo> all = userFegin.findAll();
        System.out.println(all);
        return "myqxin";
}

3 nacos

3.1 启动本地nacos

没有搭建nacos的可以参考 windows安装nacos搭建注册中心

在这里插入图片描述

3.2 启动两个项目服务

在nacos中查看两个服务说明注册成功

在这里插入图片描述

请求:http://localhost:9013/user/test006 ,效果如下

在这里插入图片描述

4 常见问题

5 参考文献

使用nacos作为注册中心实现@FeignClient

windows安装nacos搭建注册中心

@FeignClient注解详解

标签:Fegin,pom,spring,nacos,接口,alibaba,Client,小试,cloud
来源: https://blog.csdn.net/WhyLearnCode/article/details/122571039