当我没有使用该注释或任何与 MVC 相关的依赖项时,Spring 会抱怨 @EnableWebMvc
Posted
技术标签:
【中文标题】当我没有使用该注释或任何与 MVC 相关的依赖项时,Spring 会抱怨 @EnableWebMvc【英文标题】:Spring complains @EnableWebMvc when I haven't used that annotation nor any dependency related to MVC 【发布时间】:2019-11-21 21:40:30 【问题描述】:我正在开发一个反应式 Spring Boot api 服务器。我最初想使用 MVC 模式,但我认为反应器是个好主意。
所以我已经删除了所有 Spring 对 MVC 的依赖(我相信)。
但是 spring 一直抱怨我不能使用 @EnableWebMvc
和 @EnableWebFlux
。
以下是我的错误日志
Caused by: java.lang.IllegalStateException: The Java/XML config for Spring MVC and Spring WebFlux cannot both be enabled, e.g. via @EnableWebMvc and @EnableWebFlux, in the same application.
可能是什么问题?我确实更新了我的依赖项。
以下是我的 build.gradle.kts 文件
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
buildscript
repositories
mavenCentral()
dependencies
"classpath"(group = "gradle.plugin.com.palantir.gradle.docker", name = "gradle-docker")
plugins
kotlin("plugin.jpa") version "1.3.40"
id("org.springframework.boot") version "2.1.6.RELEASE"
id("io.spring.dependency-management") version "1.0.7.RELEASE"
id("com.palantir.docker") version "0.22.1"
kotlin("jvm") version "1.3.40"
kotlin("plugin.spring") version "1.3.40"
group = "com.mycompany"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8
val developmentOnly by configurations.creating
configurations
runtimeClasspath
extendsFrom(developmentOnly)
repositories
mavenCentral()
maven(url = "https://repo.spring.io/snapshot")
maven(url = "https://repo.spring.io/milestone")
extra["springCloudVersion"] = "Greenwich.SR1"
dependencies
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-batch")
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
//reactor
implementation("io.projectreactor:reactor-core")
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("org.springframework.data:spring-data-jdbc:1.0.0.r2dbc-SNAPSHOT")
implementation("org.springframework.data:spring-data-r2dbc:1.0.0.M1")
implementation("io.r2dbc:r2dbc-spi:1.0.0.M5")
implementation("io.r2dbc:r2dbc-postgresql:1.0.0.M6")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("org.postgresql:postgresql")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("io.projectreactor:reactor-test")
testImplementation("org.springframework.batch:spring-batch-test")
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
testImplementation("org.springframework.boot:spring-boot-starter-test")
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
exclude(group = "junit", module = "junit")
dependencyManagement
imports
mavenBom("org.springframework.cloud:spring-cloud-dependencies:$property("springCloudVersion")")
mavenBom("io.projectreactor:reactor-bom:Bismuth-RELEASE")
tasks.withType<KotlinCompile>
kotlinOptions
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
task<Copy>("unpack")
dependsOn(tasks.getByName("bootJar"))
from(zipTree(tasks.getByName("bootJar").outputs.files.singleFile))
into("build/dependency")
【问题讨论】:
【参考方案1】:我通过删除我拥有的每个依赖项来解决这个问题。
问题是
implementation("org.springframework.boot:spring-boot-starter-web")
删除后,它起作用了。也许上面的依赖对 WebMvc 有自己的依赖,但我不确定。
【讨论】:
以上是关于当我没有使用该注释或任何与 MVC 相关的依赖项时,Spring 会抱怨 @EnableWebMvc的主要内容,如果未能解决你的问题,请参考以下文章
Django 中的两个与搜索相关的错误:当没有搜索项时:“reduce() of empty sequence with no initial value”。在任何搜索词上:没有结果
使用 Node 8.9.4 LTS 安装 Sails.js 依赖项时,NPM“ENOENT:没有此类文件或目录错误”