1、在Feign微服务pom文件里面导入feign的依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
2、在Feign微服务写Feign接口,指向被调用者微服务,添加@FeignClient注解
//value=调用者微服务名称
@FeignClient(value = "leadnews-article")
public interface IArticleClient {//请求方式、路径
@PostMapping("/api/v1/channel/list")
//自己的业务方法
public ResponseResult list(@RequestBody ChannelPageDto channelPageDto) ;}
如何查看被调用者的微服务名称?
在yml或者nacos配置中查看:leadnews-article就是名称
spring:
application:
name: leadnews-article
3、 在被调用者微服务中 实现Feign接口:一定要加@RestController,相当于被调用者微服务的Controller,被调用的请求都写在这里。被调用者微服务不需要另写调用Controller
@RestController
public class ArticleClient implements IArticleClient {//注入要用到的业务Service
@Autowired
private WmChannelService channelService;@PostMapping("/api/v1/channel/list")
public ResponseResult list(@RequestBody ChannelPageDto channelPageDto) {
log.info("收到参数:{}",channelPageDto);//业务代码
return channelService.listPage(channelPageDto);
}}
4、在被调用者微服务 ApArticleService中新增业务方法
5、 在被调用者微服务 Service实现类写业务代码
6、调用者微服务的Controller类中调用Fenig接口和方法
@RestController
@RequestMapping("/api/v1/channel")
public class AdChannelController {//注入Fenig接口
@Autowired
private IWemediaClinet iWemediaClinet;
@PostMapping("/list")
public ResponseResult list(@RequestBody ChannelPageDto channelPageDto) {
return iWemediaClinet.list(channelPageDto);
}