spring boot集成swagger2

spriing boot 2.0.4.RELEASE + springfox-swagger2 2.9.2

引入依赖

compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'

配置

@Configuration
@EnableSwagger2
public class Swagger2Configuration extends WebMvcConfigurationSupport {

    @Bean
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.github.xx.pkg"))
                .paths(PathSelectors.ant("/api/**")).build();
    }


    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("内部接口")
                .contact(ApiInfo.DEFAULT_CONTACT)
                .version("1.0")
                .description("内部测试接口")
                .build();
    }


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

继承了WebMvcConfigurationSupport或加了@EnableWebMvc,就代表了spring boot 默认的注入处理机制都失效了如ViewResolver和静态资源文件访问

spring boot集成swagger问题

网上用以上步骤就可以访问swagger-ui.html的首页了,很不幸的是我配置的时候静态资源文件还是访问不了,但是swagger-ui.html页面的css,js都能正常加载,而其他页面的css和js访问的时候都是404

解决方案:

@Configuration
@EnableWebMvc
public class MvcWebConfig implements WebMvcConfigurer {

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }


    //如果采用这种方式,dispatcherServlet中只有一个ViewResolver:BeanNameViewResolver
    //因为使用的是JSP,需要使用InternalResourceViewResolver
    //因此会解析不了对应的JSP页面

    /**
     * 报错
     * o.s.web.servlet.DispatcherServlet        : Last-Modified value for [/login] is: -1
     * o.s.w.servlet.view.BeanNameViewResolver  : No matching bean found for view name 'login'
     * o.s.web.servlet.DispatcherServlet        : Could not complete request
     */
//    @Override
//    public void configureViewResolvers(ViewResolverRegistry registry) {
//        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
//        resolver.setPrefix("/WEB-INF/views/");
//        resolver.setSuffix(".jsp");
//        设置了优先级也不行
//        resolver.setOrder(Ordered.LOWEST_PRECEDENCE);
//        registry.viewResolver(resolver);
//    }

//  以这种方式填加ViewResolver,之后DispatcherServlet中viewResolvers就
//  BeanNameViewResolver和InternalResourceViewResolver
//  并且InternalResourceViewResolver的优先级比BeanNameViewResolver的更低
    @Bean
    public ViewResolver iRViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        //设置优先级,值越低,优先级越高
        //让所有处理不了的VieResolver最后都交给InternalResourceViewResolver处理
        resolver.setOrder(Ordered.LOWEST_PRECEDENCE);
        return resolver;
    }


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //指定了静态资源文件的位置
        registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/resources/");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值