Spring|Spring Cloud Eureka demo

测试使用的是SpringBoot项目。可以使用Spring官方文档 提供的页面直接下载。
1. 创建Eureka服务注册中心 1.1.maven配置

org.springframework.boot spring-boot-starter org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import

1.2.配置文件
#服务端口 server.port=8080 #服务名称 spring.application.name=eureka-server #服务地址 eureka.instance.hostname=localhost #禁止自己当做服务注册 eureka.client.register-with-eureka=false #屏蔽注册信息 eureka.client.fetch-registry=false

1.3.开启Eureka功能
【Spring|Spring Cloud Eureka demo】使用@EnableEurekaServer注解
@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }

1.4.启动服务
打开http://localhost:8080/,进入eureka管理页面,此时在Instances currently registered with Eureka一栏可以看到,还没有服务注册进来。
2.创建provider,注册登记到服务中心 2.1.maven配置
org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import

2.2.配置文件
#服务端口 server.port=8090 #服务名称 spring.application.name=server-provider #服务地址 eureka.instance.hostname=localhost #注册中心路径,表示我们向这个注册中心注册服务,如果向多个注册中心注册,用“,”进行分隔 eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka

2.3.开启自动注册功能
@EnableEurekaClient注解,注意跟server不一样
@SpringBootApplication @EnableEurekaClient public class ServerProviderApplication { public static void main(String[] args) { SpringApplication.run(ServerProviderApplication.class, args); } }

2.4.写测试用例,对外提供服务的接口
@RestController public class UserController {@GetMapping("/user/{name}") public String getUser(@PathVariable String name) { return new User(name).getIdentity(); }}

3.创建consumer,调用provider的接口 3.1.maven配置
跟2.1配置一样
org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import

3.2.配置文件
跟2.2.几乎一样,注意服务端口/名称可能不一致
#服务端口 server.port=8091 #服务名称 spring.application.name=server-consumer #服务地址 eureka.instance.hostname=localhost #注册中心路径,表示我们向这个注册中心注册服务,如果向多个注册中心注册,用“,”进行分隔 eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka

3.3.开启自动注册功能
@EnableEurekaClient注解
@SpringBootApplication @EnableEurekaClient public class ServerProviderApplication { public static void main(String[] args) { SpringApplication.run(ServerProviderApplication.class, args); } }

3.4.使用RestTemplate调用服务
@Configuration public class RestConfig {@Bean @LoadBalanced //负载均衡 public RestTemplate restTemplate() { return new RestTemplate(); } }

3.5.写测试用例
@RestController @Slf4j public class TestController {# 注册在服务中心的服务名 private String providerServerName = "server-provider"; private final RestTemplate restTemplate; public TestController(RestTemplate restTemplate) { this.restTemplate = restTemplate; }@GetMapping("/test") public String getUserIdentity() { val identity = restTemplate.getForEntity(String.format("http://%s/user/test", providerServerName), String.class).getBody(); return identity; }}

4.测试 启动三个服务,调用consumer的/test方法,查看范围结果。
完整代码参考:https://github.com/Grrui/spring-cloud-demo

    推荐阅读