Eureka注册中心服务端
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
编写启动类@EnableEurekaServer
package com.gwf;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* @Author gwf
* @Data 2024/2/17 下午5:24
**/
@SpringBootApplication
@EnableEurekaServer
public class EurekaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServiceApplication.class, args);
}
}
编写配置文件
# 访问端口
server:
port: 10086
#项目名
spring:
application:
name: eureka-server
# eureka-service配置
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka/
Eureka服务注册
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>4.0.2</version>
</dependency>
配置
userservice
server:
port: 9000
spring:
application:
name: userservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
orderservice
server:
port: 9000
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
多次启动userService
复制服务修改端口启动
远程调用
给RestTemplate这个Bean添加一个@LoadBalanced注解
package com.gwf.orderservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
public class OrderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
修改调用
package com.gwf.orderservice;
import com.gwf.orderservice.entity.Order;
import com.gwf.orderservice.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @Author gwf
* @Data 2024/2/17 下午3:39
**/
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId")Long orderId){
Order order = new Order();
order.setId(orderId);
order.setUserId(1L);
order.setName("手机");
order.setNum(2);
order.setPrice(1999L);
String url ="http://userservice:8081/user/"+order.getUserId();
User user = restTemplate.getForObject(url, User.class);
order.setUser(user);
return order;
}
}