当前位置: 首页 > 知识库问答 >
问题:

将spring-boot从2.3.5.release升级到2.4.0后,在reactor.netty.tcp包中找不到ProxyProvider

潘灵均
2023-03-14

在pom.xml中从Spring Boot Version2.3.5.Release升级到2.4.0之后,不能再导入类ProxyProvider(import reactor.netty.tcp.ProxyProvider;)。请注意,即使在Spring Boot的较晚版本(尝试了2.5.0和2.5.2)中,它也不起作用。通过检查Maven依赖关系,我注意到:

  • 在版本2.3.5.release中,该类取自io.projectreactor.netty:reactor-netty:0.9.12.release
  • 在2.4.0版本中,该类取自io.projectreactor.netty:reactor-netty-http:1.0.1

我可以通过检查导入的类reactor.netty.http.client.httpclient的来源在IntelliJ上找到这些信息,该类可以在两个版本上工作,尽管如上所述是来自两个不同的库。

<!-- Azure KeyVault access (password safe) -->
<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-keyvault-secrets-spring-boot-starter</artifactId>
    <version>${azure.version}</version>
    <scope>runtime</scope>
</dependency>

这是使用ProxyProvider类的代码

HttpClient httpClient = HttpClient.create()
    .tcpConfiguration(tcpClient -> (sslContext != null
            ? tcpClient.secure(sslProviderBuilder -> sslProviderBuilder.sslContext(sslContext))
            : tcpClient)
            .proxy(proxy -> proxy
                    .type(ProxyProvider.Proxy.HTTP)
                    .host(host)
                    .port(port))
    );

共有1个答案

郑宜民
2023-03-14

我发现,在我的代码中,tcpconfiguration方法在Spring Boot Version2.4.0上被弃用,从而找到了解决方案。然后我尝试寻找替代方案,从Github上的这篇文章中,我发现了一个关于如何改进代码的提示:https://Github.com/reactor/reactor-netty/issues/1397#issuecomment-751976453。简而言之,它说

可以通过HttpClient.tcpConfiguration()配置的所有内容,现在可以直接使用HttpClient公开的方法进行配置

对于任何感兴趣的人,我在这里发布我更新的代码,它与问题中的代码逻辑相同,但没有错误,在Spring Boot 2.4.0中:

HttpClient httpClient = HttpClient.create();
            if (sslContext != null) {
                httpClient.secure(sslContextSpec -> sslContextSpec.sslContext(sslContext));
            }
            httpClient.proxy(typeSpec -> typeSpec.type(ProxyProvider.Proxy.HTTP).host(host).port(port));
 类似资料:
  • 我正在将一组遗留应用程序升级到Spring Boot2.4.0,运行在OpenJDK8上,部署到Pivotal Cloud Foundry。 我将添加到我的和测试文件中: 仍然没有快乐--所有的测试都失败了。 我被我看到的其他链接弄糊涂了。这是的问题吗?我读到版本可能存在问题。我需要把它添加到我的应用程序吗?在升级之前,它从来不需要这种依赖关系:

  • 我们最近升级了我们的Kotlin Spring Boot项目,使之成为Spring Boot2.3.2,从那以后,gradle似乎再也无法进行任何测试了。 我们使用的是 gradle 包装器 5.6.2 并升级到 6.3,尽管文档指出 5.6.x 也应该可以工作。Gradle 升级没有帮助,gradle 仍然无法接受任何测试,当我降级到 2.2.3 时它工作正常。我们使用Kotest,Junit5

  • pom.xml 与Spring Boot starter父级相关的最新升级版本

  • 我用Play2.0创建了一个应用程序。我实现了scribe-java库来使用一些OAuth服务。直到今天,一切都很好,但当我升级jdk并重新启动服务器时,我不能使用scribe-java库。它似乎在sun.security包中使用了和类,但找不到。 “java-version”返回: 播放2.0 StackTrace:

  • 我的项目使用Spring Security 3.2.0.RC2,我的JSP使用Spring TagLib的form:form标记自动将CSRF令牌插入到我的表单中。 升级到Spring Security 3.2.0.版本后,我发现form:form标记不再自动将CSRF令牌插入到我的表单中,我现在必须通过将该令牌放在我的表单中来手动添加它: 还有其他人遇到过同样的问题吗?如果是,你做了什么工作?谢

  • 当我尝试启动应用程序时,在将Spring Boot从2.1.5升级到2.2.2之后,我收到了这个异常消息。 当我刚刚升级到SpringBoot2.2.1时,这个异常不会发生。 添加依赖项后: 它适用于2.2.2。 所以我的问题是,为什么在这次Spring Boot升级之后突然需要手动添加依赖项。