当前位置: 代码迷 >> 综合 >> 应用通信-feigen和 restTemplate
  详细解决方案

应用通信-feigen和 restTemplate

热度:12   发布时间:2023-12-29 07:43:53.0

feigen:

1 依赖

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-feign</artifactId>

</dependency>

 

 

2 用法

 

启动类

@EnableFeignClients

 

接口处

package com.order.client;

 

import org.springframework.cloud.netflix.feign.FeignClient;

import org.springframework.web.bind.annotation.GetMapping;

 

/**

* @Author: huey

* @Desc:

*/

//@FeignClient //注意 这里一定要给数据 就是 你要访问的服务(已经注册在服务中心)

@FeignClient(name = "product")

public interface ProductClient {

 

@GetMapping("/msg")

String test();

 

}

 

 

3

实际用法

package com.order.controller;

 

 

import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

 

/**

* @Author: huey

* @Desc:

*/

@RestController

@Slf4j

public class ClientController {

 

@Autowired

private ProductClient productClient;

 

@GetMapping("/getProductMsg")

public String getProductMsg(){

String msg=productClient.test();

log.info("mes={}",msg);

return msg;

}

}

restTemplate:

 

1

log.info("第一种用法");

RestTemplate restTemplate=new RestTemplate();

String res=restTemplate.getForObject("http://localhost:8082/service/msg",String.class);

log.info("res={}",res);

 

2

/* @Autowired

private LoadBalancerClient loadBalancerClient;*/

 

log.info("第二种");

RestTemplate restTemplate1=new RestTemplate();

ServiceInstance serviceInstance=loadBalancerClient.choose("ORDER");

String url=String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort()+"/service/msg");

restTemplate1.getForObject(url,String.class);*/

 

3

/**

* @Author: huey

* @Desc:

*/

 

import org.springframework.cloud.client.loadbalancer.LoadBalanced;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.client.RestTemplate;

 

@Configuration

public class RestTemplateConfig {

 

@Bean

@LoadBalanced

public RestTemplate restTemplate(){

return new RestTemplate(); //与下下面差不多

}

}

 

 

log.info("第三种");

String res=restTemplate.getForObject("http://ORDER/service/msg",String.class);

log.info("res={}",res);

4

bean注入:

@Bean

RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder){

 

return restTemplateBuilder.build();//与上上面差不多

}

 

 

  相关解决方案