Feign

在上个例子中,我通过1、启动eureka 2、注册服务  3、调用服务做了一个简单的demo,但是在最后面,我是通过这样一段代码来调用服务的提供者的

  @GetMapping("/movie/{id}")
  public User findById(@PathVariable Long id) {
    // http://localhost:7900/simple/
    // VIP virtual IP
    // HAProxy Heartbeat
    return this.restTemplate.getForObject("http://microservice-provider-user/simple/" + id, User.class);
  }

 那么这里就存在一个问题,这里只有一个参数id,通过这个ID调用服务提供者,但是假如的参数很多很多,我一个拼接就非常麻烦,而且每个地方都要写服务的地址,那么我们必须要同一把服务名称放在某一个配置中,因此我们这里用到Fegin。

pom.xml



	4.0.0

	microservice-consumer-movie-feign
	jar

	
		com.snail.cloud
		microservice-spring-cloud
		0.0.1-SNAPSHOT
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.cloud
			spring-cloud-starter-eureka
		

		
			org.springframework.boot
			spring-boot-starter-actuator
		

		
			org.springframework.cloud
			spring-cloud-starter-feign
		
	

UserFeignClient.java
@FeignClient("microservice-provider-user")
public interface UserFeignClient {
  @RequestMapping(value = "/simple/{id}", method = RequestMethod.GET)
  public User findById(@PathVariable("id") Long id); 

}
MovieController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import com.itmuch.cloud.entity.User;
import com.itmuch.cloud.feign.UserFeignClient;

@RestController
public class MovieController {

  @Autowired
  private UserFeignClient userFeignClient;

  @GetMapping("/movie/{id}")
  public User findById(@PathVariable Long id) {
    return this.userFeignClient.findById(id);
  }

}

最后我们启动

ConsumerMovieFeignApplication.java
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class ConsumerMovieFeignApplication {
  public static void main(String[] args) {
    SpringApplication.run(ConsumerMovieFeignApplication.class, args);
  }
}

Feign_第1张图片

最后我们通过http://192.168.139.1:7901/movie/1调用microservice-provider-user提供的服务

Feign_第2张图片

你可能感兴趣的:(Spring,Cloud)