springCloud整合Eureka+Feign

Feign是什么?

Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解.Feign也支持可拔插式的编码器和解码器.Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters.Feign可以与Eureka和Ribbon组合使用以支持负载均衡.

只需要你创建一个接口,然后在上面添加注解即可.

下面进行一个实例说明,首席按创建一个MAVEN项目,添加五个工程

1、eureka服务注册中心

2、会员服务接口api

3、会员服务实现

4、订单服务接口api

5、订单服务实现

 

springCloud整合Eureka+Feign_第1张图片

这里我把

两个服务的接口api放到一起了,严格来说这样不是很规范。

规范应该是这样的结构

cloud-parent

--api-service-impl

   ----api-feign-ImemberIpml  端口:8190

   ----api-feign-IorderIpml   端口:8191

--api-feign

   ----api-feign-ImemberService

   ----api-feign-IorderService

--eureka服务注册中心  端口8180

在parent  pom文件中加入Feign依赖,


    org.springframework.cloud
    spring-cloud-starter-openfeign
    2.2.1.RELEASE

启动类都加入注解

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients

springCloud整合Eureka+Feign_第2张图片

springCloud整合Eureka+Feign_第3张图片

会员,订单服务实现接口api编写接口

springCloud整合Eureka+Feign_第4张图片

两个服务的接口我这里为了方便写的一样的 。

springCloud整合Eureka+Feign_第5张图片

springCloud整合Eureka+Feign_第6张图片

 

然后会员实现模块中新增一个实现类

package com.cloud.apimember.memberApi;

import com.cloud.cloudapi.entity.User;
import com.cloud.cloudapi.feignApi.IfeignMemberApi;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class memberSerive implements IfeignMemberApi {

    @RequestMapping("/getUser")
    public String getUser(String name) {
        return "this member 8190";
    }
    @RequestMapping("/user")
    public User user(@RequestParam(value = "name") String name, @RequestParam(value = "age") String age) {
        User user = new User();
        user.setAge(age);
        user.setName("订单服务调用会员服务");
        return user;
    }
}

订单模块也一样

 

package com.cloud.apiorder.orderImpl;

import com.cloud.apiorder.feignUtils.MemberInstance;
import com.cloud.cloudapi.entity.User;
import com.cloud.cloudapi.feignApi.IfeignApi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@Configuration
public class orderImpl implements IfeignApi {
    @Autowired
    private MemberInstance memberInstance;
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
    @RequestMapping("/getUser")
    public String getUser(String name) {
        RestTemplate rs = getRestTemplate();
        return "this order";
    }
    @RequestMapping("/user")
    public User user(@RequestParam(value = "name") String name, @RequestParam(value = "age") String age) {
        User user1 = memberInstance.user(name, age);
        return user1;
    }
}

做完这些先测试各自接口能不能接通。

没问题之后看订单服务如何调用会员服务的接口。

首先,在订单实现模块 pom中加入会员接口api的依赖

springCloud整合Eureka+Feign_第7张图片

在订单实现模块中添加一个接口集成会员的接口

package com.cloud.apiorder.feignUtils;

import com.cloud.cloudapi.feignApi.IfeignMemberApi;
import org.springframework.cloud.openfeign.FeignClient;

@FeignClient("memberService")
public interface MemberInstance extends IfeignMemberApi {

}

springCloud整合Eureka+Feign_第8张图片

这样就可以直接在订单服务中调用会员服务了。

成功结果如下

 

springCloud整合Eureka+Feign_第9张图片

写的比较糙,估计各位也看不懂,瞎搞了一下。

想系统学习建议去找找别的大神的博客。哈哈哈哈哈。

 

 

 

你可能感兴趣的:(Feign)