下面是详细的“springboot2.0和springcloud Finchley版项目搭建(包含eureka,gateWay,Feign,Hystrix)”攻略。
准备环境
首先,需要准备以下环境:
- JDK 1.8及以上版本
- Maven 3.5及以上版本
- IntelliJ IDEA或者eclipse等IDE
创建Spring Boot项目
-
打开IntelliJ IDEA,选择New Project,然后选择Spring Initializr
-
创建一个Maven项目,选择Spring Boot 2.x版本,填写Group、Artifact、Packaging等信息
-
填写项目依赖,选择Eureka Discovery Server、Eureka Discovery Client、Spring Cloud Gateway、Feign和Hystrix等依赖
-
点击Next,选择项目名称和保存路径,然后创建项目
配置Eureka Server
- 在application.properties文件中加入Eureka Server的配置信息
# EurekaServer 配置
server.port=8761
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
- 在启动类上添加@EnableEurekaServer注解,标识为Eureka Server
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
配置Eureka Client
- 在application.properties文件中,加入Eureka Client的配置信息
# Eureka Client配置
spring.application.name=product-service
eureka.client.service-url.default-zone=http://localhost:8761/eureka/
- 在启动类上添加@EnableDiscoveryClient注解,标识为Eureka Client
@SpringBootApplication
@EnableDiscoveryClient
public class ProductServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ProductServiceApplication.class, args);
}
}
配置Spring Cloud Gateway
- 在application.properties文件中,加入Spring Cloud Gateway的配置信息
# Gateway 配置
server.port=8080
spring.cloud.gateway.routes[0].id=product-service
spring.cloud.gateway.routes[0].uri=lb://product-service
spring.cloud.gateway.routes[0].predicates[0]=Path=/**
- 在启动类上添加@EnableEurekaClient注解
@SpringBootApplication
@EnableDiscoveryClient
public class ApiGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ApiGatewayApplication.class, args);
}
}
配置Feign
- 在启动类上添加@EnableFeignClients注解
@SpringBootApplication
@EnableFeignClients
public class OrderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
- 创建Feign Client接口
@FeignClient(value = "product-service")
public interface ProductServiceClient {
@GetMapping("/product/{id}")
String getProductById(@PathVariable("id") Long id);
}
配置Hystrix
- 在启动类上添加@EnableCircuitBreaker注解
@SpringBootApplication
@EnableCircuitBreaker
@EnableFeignClients
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
- 在Feign Client接口中加入fallback属性:
@FeignClient(value = "product-service", fallback = ProductServiceClientFallback.class)
public interface ProductServiceClient {
@GetMapping("/product/{id}")
String getProductById(@PathVariable("id") Long id);
}
- 编写Hystrix回调类
@Component
public class ProductServiceClientFallback implements ProductServiceClient {
@Override
public String getProductById(Long id) {
return "product fallback";
}
}
示例
-
创建Product Service服务
-
创建User Service服务
-
创建Order Service服务,通过Feign调用ProductService
这样,经过以上几个步骤,我们就基本上完成了Spring Boot与Spring Cloud的整合了。在项目中,我们还可以通过Swagger UI工具为项目提供API文档,在项目中使用mybatis-plus等ORM框架操作数据库,使用Redis等缓存工具,对于微服务架构,我们还可以配合Docker等容器技术来进行管理和部署。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot2.0和springcloud Finchley版项目搭建(包含eureka,gateWay,Freign,Hystrix) - Python技术站