Как настроить приложение Spring Boot (Kotlin) для перенаправления в /swagger-ui.html? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь выяснить, что мне нужно добавить в SwaggerConfiguration, чтобы мое приложение Spring Boot автоматически перенаправляло запросы в / to /swagger-ui.html

.

Текущая конфигурация Swagger похожа на ...

package com.climate.squirrel.web

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import springfox.documentation.swagger2.annotations.EnableSwagger2
import springfox.documentation.builders.PathSelectors
import springfox.documentation.builders.RequestHandlerSelectors
import springfox.documentation.spi.DocumentationType
import springfox.documentation.spring.web.plugins.Docket

@Configuration
@EnableSwagger2
class SwaggerConfiguration {

    @Bean
    open fun api(): Docket = Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build()
}

В Java это было достигнуто как ...

@Bean
public WebMvcConfigurerAdapter forwardToIndex() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/").setViewName("redirect:/swagger-ui.html");
        }
    };
}

Когда я пытаюсь угадать эквивалент Котлина,

@Bean
fun forwardToIndex(): WebMvcConfigurerAdapter {
    return object : WebMvcConfigurerAdapter() {
        override fun addViewControllers(registry: ViewControllerRegistry) {
            registry.addViewController("/").setViewName("redirect:/swagger-ui.html")
        }
    }
}

Я получаю предупреждения об устаревании, которые я не понимаю, как обойти.

w: /Users/robert.kuhar/dev/squirrel/src/main/kotlin/com/climate/squirrel/web/SwaggerConfiguration.kt: (6, 58): 'WebMvcConfigurerAdapter' is deprecated. Deprecated in Java
w: /Users/robert.kuhar/dev/squirrel/src/main/kotlin/com/climate/squirrel/web/SwaggerConfiguration.kt: (26, 27): 'WebMvcConfigurerAdapter' is deprecated. Deprecated in Java
w: /Users/robert.kuhar/dev/squirrel/src/main/kotlin/com/climate/squirrel/web/SwaggerConfiguration.kt: (27, 25): 'WebMvcConfigurerAdapter' is deprecated. Deprecated in Java

Как мне избавиться от этих предупреждений?

1 Ответ

0 голосов
/ 19 января 2019

Это вовсе не Kotlin, это устаревшее Java-устаревшее: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurerAdapter.html.

Когда вы "Kotlinize" это в свете методов по умолчанию Java 8 ...

package com.climate.squirrel.web

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
import springfox.documentation.swagger2.annotations.EnableSwagger2
import springfox.documentation.builders.PathSelectors
import springfox.documentation.builders.RequestHandlerSelectors
import springfox.documentation.spi.DocumentationType
import springfox.documentation.spring.web.plugins.Docket

@Configuration
@EnableSwagger2
class SwaggerConfiguration {

    @Bean
    open fun api(): Docket = Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build()


    @Bean
    fun forwardToIndex(): WebMvcConfigurer {
        return object : WebMvcConfigurer {
            override fun addViewControllers(registry: ViewControllerRegistry) {
                registry.addViewController("/").setViewName("redirect:/swagger-ui.html")
            }
        }
    }
}
...