SpringCloud-Feign搭建

前言

Feign主要用途是消费端进行服务的消费,达到doubbo+zk那种面向接口的服务调用的效果。Feign集成了Ribbon。

1.api工程加入Feign相关依赖

 <!--引入feign相关依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2.api工程添加接口,并添加注解@FeignClient,value值是微服务名称

/*
* 定义访问注册中心的接口
* */
@FeignClient(value = "DEPT-PROVIDER")
public interface DeptService {
    @RequestMapping(method = RequestMethod.GET, path = "dept")
    Dept findOne();
}

3.消费端的工程引入feign相关依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>

4.消费端工程yml配置文件中添加Eureka地址

eureka:
  client:
    service-url:
      #指定需要做负载均衡的注册中心地址
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
    register-with-eureka: false

5.消费端工程主启动类加入注解

@SpringBootApplication
@EnableEurekaClient
/*记得扫描api中的接口.feign注解要扫描,对象注入也要扫描*/
@EnableFeignClients(basePackages={"mservice.cloud.api"})
//@ComponentScan(basePackages = {"mservice.cloud.api"}) 加了这个只会扫描指定包中的,启动类下的包并不会自动扫描了
@ComponentScan(basePackages = {"mservice.cloud.api","mservice.cloud.consumer.feign.controller"})
public class ConsumerFeignMain80 {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerFeignMain80.class,args);
    }
}

这里注意@EnableFeignClients和@ComponentScan两个注解,@EnableFeignClients注解扫描的路径是步骤2中加了@FeignClient的类的包,@ComponentScan也需要扫描这个包下的类才能够将类的实例注入到Spring容器中

6.消费端工程中的controller直接调用步骤2中的接口实现服务的消费

@RestController
public class DeptController {

    @Autowired
    private DeptService deptService;

    @RequestMapping(method = RequestMethod.GET,value = "dept")
    public Dept findOne(){
        return deptService.findOne();
    }

  
}
springcloud-netflix是一个基于Spring Cloud的微服务框架。它提供了一系列工具和组件来简化开发和管理分布式系统的任务。其中包括Eureka、Feign和Zuul等组件。 在搭建springcloud-netflix项目时,需要创建父工程和子工程。父工程是springcloud-netflix-parent,子工程可以是springcloud-netflix-eureka、springcloud-netflix-service-pay等。每个子工程都需要在pom.xml文件中导入相应的依赖。 对于springcloud-netflix-eureka,需要导入spring-cloud-starter-netflix-eureka-server和spring-cloud-starter-netflix-eureka-client等依赖。此外,还需要配置相关的类。 对于springcloud-netflix-service-pay,需要导入spring-cloud-starter-netflix-eureka-client、spring-boot-starter-web和spring-cloud-starter-openfeign等依赖。同样,也需要配置相关的类。 对于Zuul,它是一个API Gateway服务器,提供了动态路由、监控、弹性和安全等边缘服务的框架。在搭建Zuul时,需要导入spring-cloud-starter-netflix-eureka-client、spring-boot-starter-web和spring-cloud-starter-netflix-zuul等依赖。同时,需要配置开启Zuul。 总之,springcloud-netflix是一个基于Spring Cloud的微服务框架,包括了Eureka、Feign和Zuul等组件,可以帮助简化开发和管理分布式系统的任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringCloudNetflix](https://blog.csdn.net/Exist_W/article/details/131867868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值