在同一项目中实现Spring云网关

在同一项目中实现Spring云网关,spring,spring-boot,microservices,api-gateway,spring-cloud-gateway,Spring,Spring Boot,Microservices,Api Gateway,Spring Cloud Gateway,我在我的spring boot微服务中为其他微服务提供了一个api,我想在这个微服务前面放一个spring云网关 我已经阅读了著名的spring文档(),但据我所知,它要求我在一个单独的项目中启动云网关。但是我想在我的微服务中运行Routelocatorbean。不是在单独的项目中,而是在同一个项目中 当我在同一个项目中使用它时,会得到这样的警告 <dependency> <groupId>org.springframework.boot&

我在我的spring boot微服务中为其他微服务提供了一个api,我想在这个微服务前面放一个spring云网关

我已经阅读了著名的spring文档(),但据我所知,它要求我在一个单独的项目中启动云网关。但是我想在我的微服务中运行Routelocatorbean。不是在单独的项目中,而是在同一个项目中

当我在同一个项目中使用它时,会得到这样的警告

        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web-services</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>spring-boot-starter-web</artifactId>
                <groupId>org.springframework.boot</groupId>
            </exclusion>
        </exclusions>
    </dependency>
在类路径上找到Spring MVC,该类路径目前与Spring Cloud Gateway不兼容。请删除Spring boot starter web依赖项

后来,正如他在警告中所说,我删除了SpringBootStarterWeb依赖项,甚至在其他项目中也删除了它,像这样将它们排除在外

        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web-services</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>spring-boot-starter-web</artifactId>
                <groupId>org.springframework.boot</groupId>
            </exclusion>
        </exclusions>
    </dependency>

org.springframework.boot
SpringBootStarterWeb服务
SpringBootStarterWeb
org.springframework.boot
这次我逻辑上得到了错误

“org.springframework.beans.factory.BeanDefinitionStoreException:无法处理配置类[com.company operations.Service operationapplication]的导入候选项;嵌套异常为org.spring..core.NestedIOException:无法加载类[javax.servlet.Filter];嵌套异常为java.lang.ClassNotFoundException:javax.servlet.Filter “

我们从应该提供web api服务的项目中删除了核心库:D

因此,我可以在同一个项目中使用云网关吗?不使用它的原因和逻辑是什么?
如果不可能在同一个项目中使用它,那么gateway的著名实践应该是什么,我应该在每个api微服务前面放置一个网关,还是应该在我的项目中有一个由多个微服务组成的网关?

您可以在同一个项目中启动gateway,但这是一个基于webflux的项目。 从

SpringCloudGateway构建在SpringBoot2.x、SpringWebFlux和ProjectReactor上。因此,当您使用SpringCloudGateway时,您知道的许多熟悉的同步库(例如SpringData和SpringSecurity)和模式可能不适用。如果您不熟悉这些项目,我们建议您在使用SpringCloudGateway之前先阅读它们的文档,熟悉一些新概念

SpringCloudGateway需要SpringBoot和SpringWebFlux提供的Netty运行时。它在传统的Servlet容器中或作为WAR构建时不起作用

因此,您应该使用
springbootstarterwebflux
而不是
springbootstarterweb

可选地,如果需要使用传统的Spring MVC,请考虑使用。该项目目前处于维护模式,SpringGateway是它的继承者,但它应该可以工作