gpt4 book ai didi

spring-boot - 如何在 Tomcat 上运行的 Spring Web 应用程序中使用 Spring 的响应式 WebClient

转载 作者:行者123 更新时间:2023-12-04 17:38:01 26 4
gpt4 key购买 nike

无法在 Tomcat 上运行的基于 Spring 引导的 Web 应用程序中使用 Spring 的响应式(Reactive) WebClient。由于 Unresolved 依赖关系,应用程序启动本身失败。

我看了https://github.com/spring-projects/spring-boot/issues/9690但不幸的是,这不是我的选择,因为我无法将 WebApplication 类型设置为 None

我的gradle文件:

dependencies {

compile(group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa') {
exclude(module: 'tomcat-juli')
}
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-redis'


compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'
compile group: 'org.springframework.session', name: 'spring-session'

compile group: 'org.hibernate', name: 'hibernate-java8'
compile group: 'org.hibernate', name: 'hibernate-validator', version: '5.2.4.Final'

compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-guava'
compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-hibernate5'
compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310'

compile group: 'com.google.guava', name: 'guava'
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.3.2'
compile group: 'org.postgresql', name: 'postgresql'

compile group: 'io.jsonwebtoken', name: 'jjwt', version:'0.9.0'

compile group: 'com.nimbusds', name: 'nimbus-jose-jwt', version:'5.12'

// Spring managed dependency is not working, so resorted to using specific version
// compile('org.springframework.boot:spring-boot-starter-webflux')
compile group: 'org.springframework.boot', name: 'spring-boot-starter-webflux', version: '2.1.4.RELEASE'
/*
compile group: 'org.springframework', name: 'spring-web-reactive', version: '5.0.0.M1'
compile group: 'org.springframework', name: 'spring-web', version: '5.1.6.RELEASE'
*/


implementation 'com.auth0:jwks-rsa:0.7.0

}

bootRepackage {
enabled = false
}


错误:
Caused by: java.lang.NoClassDefFoundError: org/springframework/http/client/reactive/ClientHttpConnector
at org.springframework.web.reactive.function.client.WebClient.create(WebClient.java:144)

然后我尝试添加,
compile group: 'org.springframework', name: 'spring-web-reactive', version: '5.0.0.M1'

然后提示别的东西,这让我补充说
compile group: 'org.springframework', name: 'spring-web', version: '5.1.6.RELEASE'

但是在启动我的应用程序时出现另一个错误,这让我认为还有其他问题。

准确地说,我只是想从另一个微服务(基于 Spring Boot 的 Web 应用程序)中使用 Reactive WebClient 调用微服务。

使用 RestTemplate 工作正常 但我只是想尝试响应式(Reactive) WebClient 并遇到错误。

由于我们托管依赖项的方式,托管依赖项不起作用。我们的依赖服务器无法解析它们。这就是具有特定版本的 spring boot 依赖项的原因

最佳答案

org.springframework.http.client.reactive.ClientHttpConnectorspring-web 的一部分jar 所以它应该可用,如果使用使用 spring-boot-starter-webfluxspring-boot-starter-web .如果您正在编写基于 servlet 的传统应用程序,那么您应该使用 spring-boot-starter-web .

检查 gradle dependencies 的输出确保您有一个 spring-web jar 。如果你这样做了,很可能它以某种方式被损坏了,你应该清除你的 gradle 缓存。

我还建议您使用 Spring Boot 的 managed dependencies而不是在每个依赖项上指定版本号。这将确保您获得已知可以很好地协同工作的版本。

关于spring-boot - 如何在 Tomcat 上运行的 Spring Web 应用程序中使用 Spring 的响应式 WebClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55856985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com