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、订单服务实现

 

这里我把

两个服务的接口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依赖,

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

启动类都加入注解

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients

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

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

 

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

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的依赖

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

package com.cloud.apiorder.feignUtils;

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

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

}

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

成功结果如下

 

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

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

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值