首先在A应用Controller中写个方法 例如:
package com.hlvy.hlvyeclient.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* HttpClienTest
*
* @author heng
**/
@RestController
@RequestMapping("httpclien")
public class HttpClienTest {
@RequestMapping("httpstr")
public String gethttpstr(){
return "hello http clien";
}
}
接着在b应用调用
package com.hlvy.order.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
/**
* 第三种方法配置
* RestTemplateConfig
*
* @author heng
**/
@Component
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
package com.hlvy.order.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* HttpClient
*
* @author heng
**/
@RestController
@RequestMapping("client")
@Slf4j
public class HttpClient {
//第二种方式
/* @Autowired
private LoadBalancerClient loadBalancerClient*/;
//第三种方式
@Autowired
private RestTemplate restTemplate;
@RequestMapping("clitest")
public String hclient(){ //跨服务调用
//第一种方法直接使用RestTemplate url写死
/* RestTemplate restTemplate = new RestTemplate();
String res = restTemplate.getForObject("http://localhost:8081/httpclien/httpstr",String.class);
log.info(res+"---------------------------");*/
//第二种方法 利用loadBalancerClient通过应用名获取url 然后再使用 RestTemplate
/* RestTemplate restTemplate = new RestTemplate();
ServiceInstance serviceInstance = loadBalancerClient.choose("HLVYCLIENT");
String url = String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort()+"/httpclien/httpstr");
String res = restTemplate.getForObject(url,String.class);
log.info(res+"---------------------------666");*/
//第三种方式 利用@LoadBalanced注解 可在restTemplate使用应用名字
String str = restTemplate.getForObject("http://HLVYCLIENT/httpclien/httpstr",String.class);
log.info(str+"-------------------------------------777");
return str;
}
}