创建基本环境
在实体模块里添加Feign的依赖,并且提供接口
package com.study.cloud.service;
import com.study.cloud.bean.Book;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@Component
@FeignClient(value = "SPRINGCLOUD-PROVIDER")
public interface BookClientService
{
@GetMapping("/book/provide/{bookID}")
Book queryById(@PathVariable("bookID") Integer bookID);
}
从上面代码看和正常我们写springboot的代码有什么不一样的感觉呢?就是似乎把请求放到了接口上了。
Feign客户端
package com.study.cloud.controller;
import com.study.cloud.bean.Book;
import com.study.cloud.service.BookClientService;
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 java.util.List;
/**
* @description: 这里我是消费者,我在消费的时候需要自己有service层吗?我觉得显然是否定,那么问题来了,如果
* controller没有service他该如何去调用service呢?
* 通过RestTemplate
* @author: Leo
* @createDate: 2020/2/10
* @version: 1.0
*/
@RestController
public class BookConSumController
{
@Autowired
BookClientService bookClientService = null;
@RequestMapping("/book/consumer/get/{bookID}")
public Book getBookById(@PathVariable("bookID") Integer bookID)
{
return this.bookClientService.queryById(bookID);
}
}
第一是注入进来需要声明
第二是要用this来调用
主启动类
@EnableFeignClients(basePackages = "com.study.cloud")
配置文件
与之前完全一样,不需要任何变动
server:
port: 80
eureka:
client:
register-with-eureka: false #不向eureka中注册自己
service-url:
defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
Author By 朝花不迟暮
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/16466.html