Feign项目搭建

1、Feign

OpenFeign是Netflix开发的声明式、模板化的HTTP请求客户端,可以更加便捷、优雅地调用http api。OpenFeign会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign会将函数的参数值设置到这些请求模板中。Feign主要是构建微服务消费端,只要使用OpenFeign提供的注解修饰定义网络请求的接口类,就可以使用该接口的实例发送RESTful的网络请求,还可以集成Ribbon和Hystrix,提供负载均衡和断路器。是一个 Http 请求调用的轻量级框架,可以用Java 接口注解的方式调用 Http 请求,而不用像 Java 中通过封装 HTTP 请求报文的方式直接调用,通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。

2、Feign和OpenFeign的关系

Feign本身不支持Spring MVC的注解,它有一套自己的注解。

OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如@RequestMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

3、项目搭建

(1)创建项目User-Provider

选择依赖:Spring web、Eureka Discovery Client

(2)创建项目User-API

选择依赖:spring-boot-starter-web

创建一个接口 RegisterApi

@RequestMapping("/User")
public interface RegisterApi {

	@GetMapping("/isAlive")
	public String isAlive();
}

(3)User-Provider 实现API

配置文件

eureka.client.service-url.defaultZone=http://euk1.com:7001/eureka/

server.port=81

spring.application.name=user-provider

引入API

  • maven install User-Api项目
  • User-Provider的Pom.xml添加依赖
<dependency>
	 <groupId>com.example.User-API</groupId>
	 <artifactId>User-API</artifactId>
	 <version>0.0.1-SNAPSHOT</version>
</dependency>

创建UserController,并实现Api的接口  

@RestController
public class UserController implements RegisterApi {

	@Override
	public String isAlive() {
		return "ok";
	}

}

(4)Consumer调用

创建项目User-Consumer

选择依赖:Spring web、Eureka Discovery Client、OpenFeign

引入API:在Pom.xml添加依赖

<dependency>
		<groupId>com.example.User-API</groupId>
		<artifactId>User-API</artifactId>
		<version>0.0.1-SNAPSHOT</version>
</dependency>

配置文件:

eureka.client.service-url.defaultZone=http://euk1.com:7001/eureka/

server.port=90

spring.application.name=consumer

创建Service接口

@FeignClient(name = "user-provider")
public interface UserConsumerService extends RegisterApi {

}

创建Controller

@RestController
public class ConsumerController {

	@Autowired
	UserConsumerService consumerSrv;
	
	@GetMapping("/alive")
	public String alive() {
		return consumerSrv.isAlive();
	}
	
}

 修改启动类

@SpringBootApplication
@EnableFeignClients
public class UserConsumerApplication {

	public static void main(String[] args) {
		SpringApplication.run(UserConsumerApplication.class, args);
	}

}

(5)测试

访问 http://localhost:90/alive 即可完成声明式远程服务调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值