springboot2和eureka整合选择netty作为启动容器

最近刚上手springboot2,有很多大更新,准备研究一下spring-webflux使用内置的netty容器作为启动容器。
虽然刚上手遇到些坑,但是还算是如愿看到效果了。这是我整合spring-cloud-starter-netflix-eureka-server之前的pom

    <dependencies>
        
        <!-- Spring Boot Web Flux 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        
    </dependencies>

然后我想继续引入spring-cloud,踩了些坑也算运行起来了。但是一不留神看到启动日志中启动容器变为了tomcat,试了官方设置方式,引入spring-boot-starter-reactor-netty无效,还是tomcat启动

clipboard.png
这是我引用之后的pom

    <dependencies>
        
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        
        <!-- Spring Boot Web Flux 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <!-- 使用netty作为启动容器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-reactor-netty</artifactId>
        </dependency>
        
    </dependencies>

spring-cloud-starter-netflix-eureka-server这个引用会使我的启动容器变为tomcat,注释了就没问题。
我查看该引用的pom,最终在spring-cloud-netflix-eureka-server的pom中找到了他加了spring-boot-starter-web的引用,而这个引用中又引用了spring-boot-starter-tomcat。
我猜测是这一处造成的,但是我没有找到好的解决办法覆盖这个启动,请问有什么办法达到我的目的?

阅读 10.7k
2 个回答

没试过netty,但换jetty是这样:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

首先你需要把springboot集成的tomcat容器排除掉,

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    然后再添加netty依赖才可以生效
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-reactor-netty</artifactId>
    </dependency>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题