代码信息
本篇文章涉及代码版本
组件 | 版本 |
---|---|
Spring Boot | 2.0.8.RELEASE |
Spring Cloud | Finchley.SR1 |
本篇文章涉及应用
应用 | 说明 |
---|---|
base-eureka | 服务发现 |
base-feign | 声明式调用 |
base-producer | 提供服务的最基础的应用 |
之前几个例子中的服务调用,我们使用直接地址请求和LoadBalancerClient的服务选择调用,这样客户端调用服务端数据的时候可能需要进行拼装和解析。而使用Feign可以使我们编写客户端请求的时候更加简单。
引入Feign组件
构建maven依赖
首先除了之前的依赖需要额外引入feign的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
参数配置application.yml
spring:
application:
name: base-feign
server:
port: 8403
eureka:
client:
service-url:
defaultZone: http://localhost:8000/eureka/
logging:
file: ${spring.application.name}.log
代码编写
主类编写
开启feign服务,@EnableFeignClients
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class FeignApplicton {
public static void main(String[] args) {
SpringApplication.run(FeignApplicton.class, args);
}
}
远程请求代码
@Service
@FeignClient("base-producer")
public interface ClientService {
/**
* 测试的服务获取
* @return
*/
@RequestMapping(value = "getService",method = RequestMethod.POST)
String getService();
}
远程调用只需要接口,不需要进行具体实现,实现代码交给feign来处理。只需要在FeignClient中配置服务地址,其他的地方只需要和服务提供方的服务保持一致即可。
测试请求的代码
@RestController
public class FeignController {
@Autowired
ClientService clientService;
@RequestMapping(value = "/consumer",method = RequestMethod.GET)
public String getClientService() {
return clientService.getService();
}
}
此时请求地址http://localhost:8403/consumer
可以成功拿到数据
本篇文章并未贴出所有代码,涉及的源码下载地址:https://gitee.com/daifylearn/cloud-learn
ps.上述的所有项目都是可以成功运行的。但是在后期为了实现每个应用端口尽量不冲突会有些许调整,而后续某次作死调整结构和名称可能会导致部分项目无法运行o(╯□╰)o,如果发现请留言我进行修改。