1,
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.21</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.21</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
先引入这几个资源的配置文件。
这几个文件要是重新引入的话,需要把这几个 包先移除,然后再把这几个配置文件写下。
@SpringBootApplication @ComponentScan(basePackages = {"com.example.aggregate_pay.controller","com.example.aggregate_pay.service.impl","com.example.aggregate_pay.dao","com.example.aggregate_pay.config","com.example.aggregate_pay.utlis"}) @EnableSwaggerBootstrapUI
启动类可以这样写。
这个里面可以把这些类都扫码到。
package com.example.aggregate_pay.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import javax.servlet.http.HttpServletRequest; /** * @ClassName: WebMvcConfigurer * @Author: wfg * @Date: 2021/5/28 09:59 * @Description: TODO */ @Configuration public class WebMvcConfigurerQ implements WebMvcConfigurer { /** * 拦截器加载 */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); } }
这个是拦截器的类,这个可以用来控制显示静态页面。
package com.example.aggregate_pay.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.*; import java.util.ArrayList; import java.util.Collections; /** * 前端报错 Access-Control-Allow-Origin 的前端问题解决 * **/ @Configuration public class CorsConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET","POST","DELETE","PUT") .maxAge(3600); } // @Override // public void addResourceHandlers(ResourceHandlerRegistry registry) { // String osName = System.getProperty("os.name"); // //判断操作系统类型 if(osName.toLowerCase().contains("win")){ localPath += "/"; } // registry.addResourceHandler("swagger-ui.html") // .addResourceLocations("classpath:/META-INF/resources/"); // // registry.addResourceHandler("/webjars/**") // .addResourceLocations("classpath:/META-INF/resources/webjars/"); // // super.addResourceHandlers(registry); // // } // @Override // public void addViewControllers(ViewControllerRegistry registry) { // registry.addRedirectViewController("/null/api-docs", // "/api-docs").setKeepQueryParams(true); // registry.addRedirectViewController("/null/swagger-resources/configuration/ui", // "/swagger-resources/configuration/ui"); // registry.addRedirectViewController("/null/swagger-resources/configuration/security", // "/swagger-resources/configuration/security"); // registry.addRedirectViewController("/null/swagger-resources", "/swagger-resources"); // } // private ArrayList<String> getExcludeCommonPathPatterns() { // ArrayList<String> list = new ArrayList<>(); // String[] urls = { // "/v2/api-docs", // "/swagger-resources/**", // "/cache/**", // "/api/log/save", // "/swagger-ui.html/**", // "/v2/**", // "/webjars/**" // }; // Collections.addAll(list, urls); // return list; // } }
这个涉及到拦截器的类,都注释掉,这样,就方便显示信息了。
package com.example.aggregate_pay.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * @author 李亚威 * @email liyaweibeibei@163.com * @since 2021/5/10 */ @Configuration @EnableSwagger2 public class SwaggerConfig { //配置文档信息 private ApiInfo apiInfo() { return new ApiInfoBuilder() //页面标题 .title("餐饮系统管理") .description("餐饮系统管理") //版本号 .version("1.0") .build(); } @Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select()// 通过. ()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口 .apis(RequestHandlerSelectors.basePackage("com.example.aggregate_pay.controller")) .paths(PathSelectors.any()) .build(); } // @Bean //配置docket以配置Swagger具体参数 // public Docket docket() { // return new Docket(DocumentationType.SWAGGER_2); // } }
添加这个swagger 的配置文件的类。
这个问题解决了很久,后来才发现,是属于
WebMvcConfigurerQ 这个拦截器的类应该这样写,这样就可以方便访问页面了。以后就知道了,就应该这样访问。总结经验。