Как правильно интегрировать Swagger2 с Spring MVC? - PullRequest
0 голосов
/ 28 октября 2018

Как правильно настроить Swagger2 с Spring MVC, а не с пружинной загрузкой.

В настоящее время добавлены следующие компоненты

Maven Dependency
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.7.0</version>
    </dependency>
    <!--Dependency for swagger ui -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.7.0</version>
    </dependency>

В контексте сервлет-диспетчера

<bean id="swagger2Config" class="springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration"/>

<mvc:resources location="/resources/" mapping="/resources/**"
    order="1" />
<mvc:resources location="classpath:/META-INF/resources/"  mapping="swagger-ui.html" />
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"  />

<mvc:default-servlet-handler />

и добавил конфигурацию

@EnableSwagger2
public class SwaggerConfiguration extends WebMvcConfigurerAdapter{

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/swagger-ui.html")
      .addResourceLocations("classpath:/META-INF/resources/");

    registry.addResourceHandler("/webjars/**")
      .addResourceLocations("classpath:/META-INF/resources/webjars/");
}

}

Мой контекст приложения, скажем, пример, когда я пытался запустить приложение

http://localhost:8080/sample/swagger-ui.html, 

Я получаюошибка

Unable to infer base url. This is common when using dynamic servlet 
registration or when the API is behind an API Gateway. The base url is the 
root of where all the swagger resources are served. For e.g. if the api is 
available at http://example.org/api/v2/api-docs then the base url is 
http://example.org/api/. Please enter the location manually: 

Если я попытался http://localhost:8080/sample/v2/api-docs/

, я получаю исключение

Handler processing failed; nested exception is java.lang.NoSuchMethodError
on org.springframework.web.util.UriComponentsBuilder.fromHttpRequest

Я что-то здесь упускаю, чтобы заставить его работать.

Кстати, я использую Spring 3.2.9 и Servlet API 2.5

Спасибо всем

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

На самом деле основано на stackoverflow.com/questions/33518672/… и github.com/springfox/springfox/blob/v1.0.2/README.md, Spring 3.x не совместим с Swagger 2. Поэтому я в итоге использовалSwagger 1. Я следую примеру, приведенному на github.com/martypitt/swagger-springmvc-example.Я буду обновлять, как только я успешно интегрирую Swagger 1

0 голосов
/ 29 октября 2018

Кажется, что ваша аннотация @ EnableSwagger2 не сканируется во время запуска.Попробуйте использовать компонентное сканирование в своем XML-файле сервлета диспетчера.Примерно так:

<context:component-scan base-package="your.package.name" />

Передайте пакет, в котором присутствует класс SwaggerConfiguration.Это должно решить проблему.

...