当前位置 : 主页 > 大数据 > 区块链 >

Feign的使用

来源:互联网 收集:自由互联 发布时间:2021-06-22
一、Feign实现应用间的通信 声明式REST客户端(伪RPC),采用基于接口的注解。本质上是Http客户端,Http远程调用。 1、 在Order工程中的pom文件增加 dependencygroupIdorg.springframework.cloud/group

一、Feign实现应用间的通信

声明式REST客户端(伪RPC),采用基于接口的注解。本质上是Http客户端,Http远程调用。

1、 在Order工程中的pom文件增加

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

  

2、增加注解@EnableFeignClients

 

 

3、声明要调用的接口

package com.example.demo.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * 需要在Product服务中要调的接口
 */
@FeignClient(name = "product") //product代表访问product应用下的msg接口
public interface ProductClient {

    @GetMapping("/msg") //
    String productMsg();
}

  

4、在Order应用调用

 

二、Product工程

1、增加  List<ProductInfo> findByProductIdIn(List<String> productIdList);方法

package com.example.product.repository;

import com.example.product.dataobject.ProductInfo;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;


public interface ProductInfoRepository extends JpaRepository<ProductInfo, String> {
    //查询所有在架的商品
    List<ProductInfo> findByProductStatus(Integer productStatus);

    List<ProductInfo> findByProductIdIn(List<String> productIdList);
}

  

2、Server层

@Service
public class ProductServiceImpl  implements ProductService{

    @Autowired
    private ProductInfoRepository productInfoRepository;


    /**
     * 查询商品列表
     *
     * @param productIdList
     */
    @Override
    public List<ProductInfo> findList(List<String> productIdList) {
        return productInfoRepository.findByProductIdIn(productIdList);
    }
}

 

接口

public interface ProductService {


    /**
     * 查询商品列表
     * @param productIdList
     */
    List<ProductInfo> findList(List<String> productIdList);
}

  

3、Controller层

@RestController
@RequestMapping("/product")
public class ProductController {

    @Autowired
    private ProductService productService;


    /**
     * 获取商品列表(给订单服务用)
     * @param productIdList
     * @return
     */
    @GetMapping("/listForOrder")
    public List<ProductInfo> listForOrder(List<String> productIdList){
        return  productService.findList(productIdList);
    }
}
网友评论