Как правильно настроить 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: // локальный: 8080 / образец / 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.
Спасибо вам всем





Похоже, ваша аннотация @ EnableSwagger2 не сканируется во время запуска. Попробуйте использовать сканирование компонентов в xml-файле сервлета диспетчера. Что-то вроде ниже,
<context:component-scan base-package = "your.package.name" />
Передайте пакет, в котором присутствует класс SwaggerConfiguration. Это должно решить проблему.
Да, мой пример сработал, потому что я использовал Spring версии 4.3.5, совместимой с Swagger 2.
Фактически, основываясь на 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
Фактически, основанный на 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