【SpringCloud】Feign-服务调用(五)

Note

  1. springcloud提供多种方式服务间的调用。restTemplate / loadBalance / feign 等
  2. 比较推荐使用feign
  3. 每个service应当提供一个api的包出去让其他服务能调用

GitHub

地址:https://github.com/ithuhui/hui-base-springcloud
分支:finchley | greenwich
finchley分支配置中心配置存放在git->https://github.com/ithuhui/hui-base-springcloud-config-repo

Core-Code(SERVICE-PROVIDER)

maven

<!--SpringBoot Parent-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        
        <springcloud.version>Greenwich.RELEASE</springcloud.version>
    </properties>
<dependencyManagement>
    <dependencies>
        <!--Spring Cloud dependencies-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${springcloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

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

Code

/**
 * <b><code>ProductAPI</code></b>
 * <p/>
 * Description:
 * <p/>
 * <b>Creation Time:</b> 2018/11/28 23:20.
 *
 * @author Hu Weihui
 */
@FeignClient(name = "product-server",path = "/product",fallback = ProductFeignApi.ProductFeignApiFallback.class )//如果产生服务降级就返回NULL
public interface ProductFeignApi {

    /**
     * fegin获取商品信息.
     *
     * @param id the id
     * @return the mapper
     * @author HuWeihui
     * @since hui_project v1
     */
    @GetMapping("/product/{id}")
    ResultVO<ProductDTO> get(@PathVariable("id") String id);

    @PutMapping("/products")
    ResultVO add(@RequestBody ProductDTO productDTO);

    @PutMapping("/lcn/tcc/products")
    ResultVO tccAdd(@RequestBody ProductDTO productDTO);

    @PutMapping("/lcn/txc/products")
    ResultVO txcAdd(@RequestBody ProductDTO productDTO);

    @Component
    static class ProductFeignApiFallback implements ProductFeignApi{
        /**
         * fegin获取商品信息.
         *
         * @param id the id
         * @return the mapper
         * @author HuWeihui
         * @since hui_project v1
         */
        @Override
        public ResultVO<ProductDTO> get(String id) {
            return null;
        }

        @Override
        public ResultVO add(ProductDTO productDTO) {
            return null;
        }

        @Override
        public ResultVO tccAdd(ProductDTO productDTO) {
            DTXUserControls.rollbackGroup(TracingContext.tracing().groupId());
            return null;
        }

        @Override
        public ResultVO txcAdd(ProductDTO productDTO) {
            return null;
        }
    }


}

Core-code(SERVICE-CONSUMER)

<!--引入服务提供方的API包-->
       <dependency>
            <groupId>com.hui.base.springcloud</groupId>
            <artifactId>hui-base-springcloud-product-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    @Autowired
    private ProductFeignApi productFeignApi;


    /**
     * fegin获取.
     *
     * @param id the id
     * @return the response entity
     * @author Hu weihui
     * @since hui_project 1.0.0
     */
    @GetMapping("/order/product4/{id}")
    public ResultVO<ProductDTO> getProduct4(@PathVariable("id") String id) {
        ProductDTO data = productFeignApi.get(id).getData();
        log.info(data.toString());
        return ResultMapper.ok(data);
    }
    

Author

 作者:HuHui
 转载:欢迎一起讨论web和大数据问题,转载请注明作者和原文链接,感谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值