Spring 在我没有使用该注释或任何与 MVC 相关的依赖项时抱怨 @EnableWebMvc

Spring complains @EnableWebMvc when I haven't used that annotation nor any dependency related to MVC

我正在开发反应式 spring 启动 api 服务器。我最初想使用 MVC 模式,但我认为 reactor 是个好主意。

所以我删除了所有 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")
}

我通过删除我拥有的每个依赖项来解决这个问题。

问题是

implementation("org.springframework.boot:spring-boot-starter-web")

删除后,成功了。也许上面的依赖有它自己对 WebMvc 的依赖,但我不确定。