SpringCloud Feign实战(二)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ywl470812087/article/details/102651835

一,新建Feign工程microservicecloud-consumer-dept-feign,拷贝microservicecloud-consumer-dept-80这个工程的配置和程序

二,修改配置文件pom.xml  引入Feign依赖

  <!--Feign的依赖引入-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>

三,修改我们的启动类为 DeptConsumer80_Feign_App 

package atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class DeptConsumer80_Feign_App {
	public static void main(String[] args) {
		SpringApplication.run(DeptConsumer80_Feign_App.class, args);
	}
}

四,yml配置文件不用修改

五,修改api(microservicecloud-api)添加新的接口DeptClientService

新增新的注解@FeignClient

package com.atguigu.springcloud.service;

import java.util.List;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.atguigu.springcloud.entities.Dept;


/**
 * 
 * @Description: 修改microservicecloud-api工程,根据已经有的DeptClientService接口
 * @author zzyy
 * @date 2019年10月20日
 */
@FeignClient(value = "MICROSERVICECLOUD-DEPT")
public interface DeptClientService
{
	@RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)
	public Dept get(@PathVariable("id") long id);

	@RequestMapping(value = "/dept/list", method = RequestMethod.GET)
	public List<Dept> list();

	@RequestMapping(value = "/dept/add", method = RequestMethod.POST)
	public boolean add(Dept dept);
}

这样就已经编码完成但是api是我们所有工程的公共部分

注意:因为是公共部分,我们要重新编译,Build Module 'microservicecloud-api'

扫描二维码关注公众号,回复: 7609912 查看本文章

六,我们编写到这来我们回到microservicecloud-consumer-dept-feign工程修改Controller,

package atguigu.springcloud.controller;

import com.atguigu.springcloud.entities.Dept;
import com.atguigu.springcloud.service.DeptClientService;
import org.springframework.beans.factory.annotation.Autowired;
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;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/consumer")
public class DeptController_Consumer {

    //@Autowired
    @Resource
    private DeptClientService service;

    @RequestMapping(value = "/dept/get/{id}")
    public Dept get(@PathVariable("id") Long id)
    {
        return this.service.get(id);
    }

    @RequestMapping(value = "/dept/list")
    public List<Dept> list()
    {
        return this.service.list();
    }

    @RequestMapping(value = "/dept/add")
    public Object add(Dept dept)
    {
        return this.service.add(dept);
    }
}

七,我们前面在api定义了新的接口,加了@FeignClient注解使用Feign叼,那我们的主启动类就要开启,修改主启动类

添加新的注解@EnableFeignClients(basePackages= {"com.atguigu.springcloud"})  表示开启新的feign调用方式

package atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages= {"com.atguigu.springcloud"})
@ComponentScan("com.atguigu.springcloud")
public class DeptConsumer80_Feign_App {
	public static void main(String[] args) {
		SpringApplication.run(DeptConsumer80_Feign_App.class, args);
	}
}

到这来我们基本就已经完成了基本的编码,那我们来测试下

关于启动:Eureka集群搭建和启动参考:https://blog.csdn.net/ywl470812087/article/details/102594937

启动3个微服务提供者,如果不懂微服务提供者实现请参考https://blog.csdn.net/ywl470812087/article/details/102535582

启动Feign工程:

访问:http://localhost/consumer/dept/get/1

上图测试结果看:默认使用了轮询的负载均衡

总结:

猜你喜欢

转载自blog.csdn.net/ywl470812087/article/details/102651835