第一章:熟悉Eureka
第一步:创建EurekaServer 注册中心
1,使用String Initializr 创建一个空项目,用来统一管理EurekaServer,EurekaClient
2,右键创建EurekaServer 子模块module
选择EurekaServer 组件
删除没用的文件
3,配置pom 让store统一管理子模块
store.pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cloud</groupId>
<artifactId>store</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>store</name>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.2</spring-cloud.version>
</properties>
<modules>
<module>eureka-server</module>
</modules>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
eureka-server
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cloud</groupId>
<version>0.0.1-SNAPSHOT</version>
<artifactId>store</artifactId>
</parent>
<groupId>com.cloud</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-server</name>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4,开启EurekaServer 注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
5,配置EurekaServer
server:
port: 10086
spring:
application:
name: eurekaServer
eureka:
client:
service-url:
defaultZone: http://localhost:10086/server/
register-with-eureka: false #禁止服务作为客户端向自己注册
6,本地访问lcoalhost:10086 查看当前服务
第二步:创建EurekaOrder 客户端
1,同样的右键创建子模块 Eureka-Order
2,修改srore.pom文件
3,修改eureka-order.pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>store</artifactId>
<groupId>com.cloud</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.cloud</groupId>
<artifactId>eureka-order</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-order</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4,开启EurekaClient 注解
为何使用EnableDiscoveryClient 而不用EnableEurekaClient .EnableDiscoveryClient 是SpringCloud提供的,最好使用这个注解
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaOrderApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaOrderApplication.class, args);
}
}
5,EurekaOrder 配置
server:
port: 8082
spring:
application:
name: eurekaOrder
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka/
6,启动Eurekaserver,EurekaOrder 应用,查看注册中心注册应用
第三步:创建EurekaUser 客户端
1, 按照第二部的方法创建EurekaUser客户端
server:
port: 8072
spring:
application:
name: eurekaUser
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka/
2,启动EurekaUser ,查看注册中心注册应用
第四步:使用Feign组件进行客户端调用
1,整合Feign组件
因为目前所有的模块都是由Store统一管理,直接在store.pom文件中添加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2,在EurekaOrder中暴露接口
@RestController
public class OrderController {
@GetMapping("getOrder")
public String getUserOrder(){
return "from eurekaOrder service";
}
}
3,在EurekaUser中开启Feign
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class EurekaUserApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaUserApplication.class, args);
}
}
4,定义Feign 调用接口
package com.cloud.eurekauser.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(value = "eurekaOrder")//服务名
public interface UserService {
@GetMapping("/getOrder")//方法名
String getOrder();
}
5,使用Feign 进行远程调用
@RestController
public class UserController {
@Autowired
UserService userService;
@GetMapping("getOrder")
public String getUserOrder(){
return userService.getOrder();
}
}
6,如果一切顺利 此时访问接口请求请拿到EurekaOrder提供的结果
http://localhost:8072/getOrder
from eurekaOrder service