我默认你已经是非常熟悉注册发现模式.
我们需要三步:
1:搭建注册中心
2:服务提供者
3:服务的消费者
注册中心:
1Maven依赖:
1 2 3 4
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
|
2编写配置文件:
1 2 3 4 5 6 7 8 9 10
| server.port=8761
spring.application.name=sc-demo-server
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
|
3启动类上添加注解@EnableEurekaServer //启动eureka
查看界面输入:http://localhost:8761
服务提供者:
1Maven依赖:
1 2 3 4
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
|
2编写配置文件:
1 2 3 4 5 6 7 8 9 10
| spring.application.name=pro1
server.port=8081
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=false
|
3启动类上添加注解@EnableEurekaClient // 开启服务注册
需要注意的是提供者,提供的服务是以Controller形式呈现而非Service, 此过程无需任何额外的代码。
服务的消费者:
1Maven依赖:
1 2 3 4 5 6 7 8
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
|
2编写配置文件:
1 2 3 4 5 6 7 8 9 10
| spring.application.name=con2
server.port=8082
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=true
|
3在启动类上添加注解@EnableEurekaClient
在启动类中写入以下代码:
1 2 3 4 5 6
| @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); }
|
4调用服务
1 2 3 4 5 6 7
| @Autowired private RestTemplate restTemplate;
@GetMapping("/hello") public String hello() { return "CON==="+restTemplate.getForObject("http://pro1/hello",String.class); }
|
在调用服务时,只需要 http://提供者名字/服务名 和 对应的数据类型即可.
(当然这只是其中的一种,还有更多的实现方式)