irpas技术客

SpringBoot项目搭建路由模块-gateway_qq_2423338532_springboot 路由

网络投稿 1857

网关主要功能: 限流(流量控制); 重试(请求失败时重试,慎用); 跨域(前后端不在同一个域); 路由(转发请求); 鉴权(登录校验,签名校验)等。

新建Maven子项目gateway

加入网关依赖

<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies>

加启动类和配置文件

package com.dog.gateway; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.core.env.Environment; @SpringBootApplication @EnableEurekaClient public class GatewayApplication { private static final Logger LOG = LoggerFactory.getLogger(GatewayApplication.class); public static void main(String[] args) { SpringApplication app = new SpringApplication(GatewayApplication.class); Environment env = app.run(args).getEnvironment(); LOG.info("启动成功!!"); LOG.info("Gateway地址: \thttp://192.168.0.51:{}", env.getProperty("server.port")); } }

因为这是个路由,是比较重要又跟业务不相关的模块,所以就定义路由端口是9000。其他的业务模块是从9001, 9002这么排下去的。

spring.application.name=gateway server.port=9000 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 修改一下路径--> <property name="PATH" value="/log/dog/gateway"></property> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!-- <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %msg%n</Pattern>--> <Pattern>%d{mm:ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %msg%n</Pattern> </encoder> </appender> <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${PATH}/trace.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-8X{UUID}) %msg%n</pattern> </layout> </appender> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${PATH}/error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-8X{UUID}) %msg%n</pattern> </layout> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <root level="ERROR"> <appender-ref ref="ERROR_FILE" /> </root> <root level="TRACE"> <appender-ref ref="TRACE_FILE" /> </root> <root level="INFO"> <appender-ref ref="STDOUT" /> </root> </configuration>

gateway启动失败,检查版本号 注意:如果你发现路由gateway启动报错如下:

*************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: org.springframework.cloud.gateway.config.GatewayAutoConfiguration$NettyConfiguration.gatewayHttpClient(GatewayAutoConfiguration.java:612) The following method did not exist: ......

检查下Spring Boot和Spring Cloud版本是否匹配,建议和本项目的保持一致,修改根目录下的父pom.xml

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> ... <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version> </properties>

启动注册中心和网关

路由转发

路由转发:将外部请求转发到实际的业务模块进行处理。 启动system测试一下 要在system的Controller里加上system这个路径。 可以这样 但是以后有多个方法的时候每个都要加system会很麻烦 也可以这样 但是以后有多个类的时候每个都要加system会很麻烦 所以要这样(必须 / 开头,而且不能 / 结尾) 都重新启动一下 这个时候就可以了 目的:将9001地址对外隐藏,暴露9000地址,访问的是localhost:9000/system/**.实际处理的是:localhost:9001/system/**


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #springboot #路由