feign-引入-服务之间的调用

总结:
1.导入openfeign的包
2.创建一个接口
@FeignClient配置服务的名称
配置调用的服务的url (拷贝调用服务接口过来修改)
3.启动类上打上@EnableFeignclients注解 (是否配置包的原则:feign所在包和启动类在同一级,就不用配置)
4,使用注入对象使用对象调用方法


pom.xml (消费者的)

<!--feign的支持-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

feign的接口

package cn.itsource.feign;

import cn.itsource.domain.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(value ="provider")
@RequestMapping("/user")
public interface ProviderFeignClient {
    @GetMapping("/{id}")
    User getUserById(@PathVariable("id") Integer id);
}

消费者 启动类:

package cn.itsource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients // 开启feign的调用
//@EnableFeignClients(basePackages = {"cn.itsource.feign"})  //接口所在包 和 启动类是平级,就不用配置包的所在位置
public class ConsumerApp1020 {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp1020.class);
    }
}

feign的使用:
注入feign
通过对象.方法调用

package cn.itsource.controller;

import cn.itsource.domain.User;
import cn.itsource.feign.ProviderFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;


@RestController
@RequestMapping("/consumer")
public class RemoteProviderController_feign {
    @Autowired
    private ProviderFeignClient feignClient; //注入自己的feign的接口,spring会创建代理对象(启动类加@EnableFeignClients注解)

    @GetMapping("/getUser/{id}")
    public User getUser(@PathVariable("id") Integer id){
        User user = feignClient.getUserById(id); // 对象.方法调用
        return user;
    }
}

你可能感兴趣的:(java,spring,cloud,spring,boot)