spring cloud 微服务 RestTemplate 调用方式

本文详细介绍如何使用Spring Cloud搭建微服务架构,包括Eureka注册中心、服务提供者和服务消费者的具体配置和实现过程,以及RestTemplate的负载均衡调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、先创建3个项目,一个eureka注册中心,一个eureka-service,一个eureka-client
2、eureka注册中心,配置文件

	spring.application.name=eureka-server
	server.port=8761
	# 注册中心不注册自己
	eureka.client.register-with-eureka=false
	eureka.client.fetch-registry=false
	server.context-path=/

3、在启动类上加上@EnableEurekaServer,@SpringBootApplication注解,启动eureka注册中心,成功后访问:http://localhost:8761/,若能访问则表示没有问题
4、创建 eureka-service , 配置文件如下

	# 定义eureka服务名称
	spring.application.name=eureka-client-user-service
	# 定义端口
	server.port=8084
	# 定义服务路径
	eureka.client.serviceUrl.defaultZone=http://100.119.192.254:8761/eureka/
	# 采用IP注册
	eureka.instance.preferIpAddress=true
	# 定义实例id格式
	eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
在项目中创建一个controller如下
@RestController
public class Controer {
	@Autowired
	private RestTemplate restTemplate;
	// 由eureka-client 调用
	@RequestMapping("/queryUserName")
	public String queryUserName() throws Exception{
		return “你好,世界”;
	}	
	// eureka-service 调用 erueka-client 方法
	@GetMapping("/getPass")
	public String getPass(){
		return restTemplate.getForObject("http://eureka-client-article-service/article/getPass", String.class);
	}
}

在erueka-service启动类上加上@SpringBootApplication,@EnableDiscoveryClient和@EnableEurekaClient随便写一个,例如:

@SpringBootApplication
@EnableDiscoveryClient
public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
	@Bean
	@LoadBalanced
	public RestTemplate initRestTemplate(){
		return new RestTemplate();
	}
}

启动erueka-service,成功后访问http://localhost:8084/queryUserName,应为配置的是8084端口,所以访问8084,若成功将显示“你好,世界”。
5、创建 eureka-client , 配置文件如下

# 配置调用服务端
spring.application.name=eureka-client-article-service
server.port=8083
# 定义服务路径
eureka.client.serviceUrl.defaultZone=http://100.119.192.254:8761/eureka/

在项目中创建一个controller如下

@RestController
public class UserController {
	@Autowired
	private RestTemplate restTemplate;
	// 调用服务端的方法
	@GetMapping("/article/getUserName")
	public String getUserName(){	
		String result = restTemplate.getForObject("http://eureka-client-user-service/queryUserName", String.class);
		return result;
	}
	// 提供方法给服务端调用
	@GetMapping("/article/getPass")
	public String getPass(){
		return "123456";
	}
}

在erueka-client启动类上加上@SpringBootApplication,@EnableDiscoveryClient和@EnableEurekaClient随便写一个,例如:

@SpringBootApplication
@EnableDiscoveryClient
public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
	@Bean
	@LoadBalanced
	public RestTemplate initRestTemplate(){
		return new RestTemplate();
	}
}

启动erueka-client,之后访问http://localhost:8083/article/getPass,界面显示123456为成功。
6、RestTemplate 访问方式
需要先实例化RestTemplate ,所以在eureka-service,eureka-client 启动的时候就加载了,其中@LoadBalanced注解自动将调用接口的地址替换成真正的服务地址,比如访问接口地址:
http://127.0.0.1:8084/queryUserName,使用注解后可写成:http://eureka-client-user-service/queryUserName,其中eureka-client-user-service 为配置文件的服务名称。这样就能实现服务端和客户端的调用了。
由于不论是服务端还是客户端对于注册中心来说都是调用方,所以服务方也可调用客户端,客户端也可调用服务方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值