SwaggerConfig.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package jnpf;
  2. import cn.hutool.core.util.RandomUtil;
  3. import io.swagger.v3.oas.models.OpenAPI;
  4. import io.swagger.v3.oas.models.info.Info;
  5. import io.swagger.v3.oas.models.security.SecurityRequirement;
  6. import io.swagger.v3.oas.models.security.SecurityScheme;
  7. import jnpf.util.Constants;
  8. import org.springdoc.core.models.GroupedOpenApi;
  9. import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
  10. import org.springdoc.webmvc.core.providers.SpringWebMvcProvider;
  11. import org.springframework.beans.factory.annotation.Value;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.context.annotation.Lazy;
  15. import org.springframework.http.HttpHeaders;
  16. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  17. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  18. import java.util.*;
  19. /**
  20. * Swagger配置类
  21. *
  22. * @author JNPF开发平台组
  23. * @version V3.1.0
  24. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  25. * @date 2021-03-23
  26. */
  27. @Configuration
  28. public class SwaggerConfig implements WebMvcConfigurer {
  29. @Value("${spring.application.name:}")
  30. private String name;
  31. @Value("${config.SoftVersion:}")
  32. private String version;
  33. @Bean
  34. public OpenAPI openAPI() {
  35. OpenAPI openAPI = new OpenAPI();
  36. openAPI.info(apiInfo());
  37. openAPI.schemaRequirement(Constants.AUTHORIZATION, security());
  38. return openAPI;
  39. }
  40. @Bean
  41. public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
  42. return openApi -> {
  43. if (openApi.getTags()!=null){
  44. openApi.getTags().forEach(tag -> {
  45. Map<String,Object> map=new HashMap<>();
  46. map.put("x-order", RandomUtil.randomInt(0,100));
  47. tag.setExtensions(map);
  48. });
  49. }
  50. if(openApi.getPaths()!=null){
  51. openApi.addExtension("x-test123","333");
  52. openApi.getPaths().addExtension("x-abb",RandomUtil.randomInt(1,100));
  53. }
  54. };
  55. }
  56. @Bean
  57. public GroupedOpenApi userApi(){
  58. String[] paths = { "/**" };
  59. return GroupedOpenApi.builder().group(name)
  60. .pathsToMatch(paths)
  61. .addOperationCustomizer((operation, handlerMethod) -> operation.security(
  62. Collections.singletonList(new SecurityRequirement().addList(HttpHeaders.AUTHORIZATION))
  63. ))
  64. .build();
  65. }
  66. /**
  67. * 设置文档信息
  68. * @return
  69. */
  70. private Info apiInfo() {
  71. return new Info()
  72. .title("接口文档")
  73. //描述
  74. .description("jnpf接口文档")
  75. .version(version);
  76. }
  77. private SecurityScheme security() {
  78. SecurityScheme securityScheme = new SecurityScheme();
  79. securityScheme.setType(SecurityScheme.Type.APIKEY);
  80. securityScheme.setName(Constants.AUTHORIZATION);
  81. securityScheme.setIn(SecurityScheme.In.HEADER);
  82. return securityScheme;
  83. }
  84. @Bean
  85. @Lazy(false)
  86. public SpringWebMvcProvider springWebProvider(){
  87. return new MySpringWebMvcProvider();
  88. }
  89. @Override
  90. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  91. registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
  92. registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
  93. }
  94. }