не подключается swagger на java

Народ всем привет, я использую чистый spring (без boot) и никак не могу подключить Swagger. Есть такие зависимости

 <swaggeer.version>3.0.0</swaggeer.version>
<dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
      <version>${swaggeer.version}</version>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>${swaggeer.version}</version>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-spring-webmvc</artifactId>
      <version>${swaggeer.version}</version>
    </dependency>

и такой AppConfig

   @Configuration
@EnableWebMvc
@EnableAspectJAutoProxy
@ComponentScan(basePackages = "org.example")
@PropertySource("classpath:application.yaml")
public class AppConfig implements WebMvcConfigurer {

    @Bean
    public YamlPropertiesFactoryBean yamlProperties() {
        YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
        yaml.setResources(new ClassPathResource("application.yaml"));
        return yaml;
    }

    @Bean
    public DriverManagerDataSource dataSource() {
        YamlPropertiesFactoryBean yaml = yamlProperties();
        yaml.afterPropertiesSet();
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(Objects.requireNonNull(yaml.getObject()).getProperty("database.driver-class-name"));
        dataSource.setUrl(yaml.getObject().getProperty("database.url"));
        dataSource.setUsername(yaml.getObject().getProperty("database.username"));
        dataSource.setPassword(yaml.getObject().getProperty("database.password"));
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(dataSource());
    }

    @Bean
    public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
        return new NamedParameterJdbcTemplate(dataSource());
    }

    @Bean
    public SpringLiquibase liquibase() {
        SpringLiquibase liquibase = new SpringLiquibase();
        liquibase.setDataSource(dataSource());
        liquibase.setChangeLog("classpath:db/changelog/changelog-master.xml");
        return liquibase;
    }

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.registerModule(new JavaTimeModule());
        return objectMapper;
    }

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("org.example.web"))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Car shop")
                .description("API для управления магазином по продаже автомобилей.")
                .version("1.0.0")
                .build();
    }

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

но при попытке перейти по ссылке http://localhost:28087/swagger-ui/ (tomcat работает у меня на порту 28087) всегда браузер выдает 404, а в логах
14:46:41.251 [http-nio-28087-exec-2] DEBUG org.springframework.web.servlet.DispatcherServlet -- GET "/swagger-ui/", parameters={}
14:46:41.286 [http-nio-28087-exec-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping -- Mapped to ResourceHttpRequestHandler [classpath [META-INF/resources/webjars/]]
14:46:41.295 [http-nio-28087-exec-2] DEBUG org.springframework.web.servlet.resource.ResourceHttpRequestHandler -- Resource not found
14:46:41.296 [http-nio-28087-exec-2] DEBUG org.springframework.web.servlet.DispatcherServlet -- Completed 404 NOT_FOUND

подскажите добрые люди как подключить swagger


Ответы (2 шт):

Автор решения: Дмитрий Рихтер

Правильный путь /swagger-ui/index.html

→ Ссылка
Автор решения: Alexandr
Это произошло со мной, я использовал SpringBoot 1.5.16 и Springfox 2.9.1.

В моем application.propertiesя определил server.servlet-path=/api, но, каким-то образом, swagger-ui игнорировал определенное значение. Я перепробовал много разных способов заставить это работать, и, наконец, нашел обходной путь:

@Configuration @EnableSwagger2 public class SwaggerConfiguration extends WebMvcConfigurationSupport {

@Bean
public Docket apiMonitoramento() { 
    return new Docket(DocumentationType.SWAGGER_2)
            .select()                                  
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())                          
            .build()    
            .apiInfo(apiInfo());
}

private ApiInfo apiInfo() {
    return new ApiInfoBuilder()              
            .title("REST API")
            .description("Servicesx")               
            .build();
}

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

}

→ Ссылка