1. 添加依赖
首先,在你的pom.xml
文件中添加Spring Cloud Gateway的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
如果你还需要使用Eureka进行服务发现,可以添加Eureka客户端的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2. 配置网关路由
在application.yml
或application.properties
文件中配置网关的路由规则。以下是一个简单的配置示例:
spring:
cloud:
gateway:
routes:
- id: service1_route
uri: http://localhost:8081
predicates:
- Path=/service1/**
- id: service2_route
uri: http://localhost:8082
predicates:
- Path=/service2/**
3. 启用Eureka客户端(可选)
如果你使用Eureka进行服务发现,可以在application.yml
或application.properties
文件中配置Eureka客户端
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
4. 创建主应用类
创建一个Spring Boot主应用类,并启用Eureka客户端(如果需要):
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient // 如果需要使用Eureka,启用此注解
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
5. 自定义过滤器(可选)
你可以通过实现GatewayFilter
接口来创建自定义过滤器。以下是一个简单的过滤器示例:
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
@Component
public class CustomFilter extends AbstractGatewayFilterFactory<CustomFilter.Config> {
public CustomFilter() {
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
// 在请求前执行的操作
System.out.println("Pre-filter logic");
return chain.filter(exchange).then(Mono.fromRunnable(() -> {
// 在请求后执行的操作
System.out.println("Post-filter logic");
}));
};
}
public static class Config {
// 配置参数
}
}
6. 启动应用
启动Spring Boot应用后,网关将会根据配置的路由规则将请求转发到相应的服务。
7. 访问网关
你可以通过网关的地址访问后端服务。例如,如果网关运行在localhost:8080
,你可以通过以下URL访问service1
: