1、依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
2、配置restTemplate:
1、启动类中配置
@Bean
@LoadBalanced // 添加负载均衡的机制,默认使用的是轮询策略
public RestTemplate restTemplate(RestTemplateBuilder builder){
return builder.build();
}
2、配置类中配置:
@Configuration
public class RestConfig {
@Bean
@LoadBalanced // 添加负载均衡的机制,默认使用的是轮询策略
public RestTemplate restTemplate(RestTemplateBuilder builder){
return builder.build();
}
}
以上两种方式只能选择一种进行配置。否则配置bean 重复:
The bean 'restTemplate', defined in com.lemon.alibaba.OrderApplication, could not be registered. A bean with that name has already been defined in class path resource [com/lemon/alibaba/config/RestConfig.class] and overriding is disabled.
3、调用:
@RestController
@RequestMapping("/order")
public class IndexController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/index")
public String index(){
String sstr = restTemplate.getForObject("http://stock-service/stock/index",String.class);
return "ok=" + sstr;
}
}
4、地址说明:
String sstr = restTemplate.getForObject("http://stock-service/stock/index",String.class);
stock-service为被调用服务的服务名
server:
port: 9001
spring:
application:
name: stock-service
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
username: nacos
password: nacos