Java 我可以更改Swagger显示的默认定义吗?

Java 我可以更改Swagger显示的默认定义吗?,java,spring-boot,swagger-ui,swagger-2.0,springfox,Java,Spring Boot,Swagger Ui,Swagger 2.0,Springfox,我可以将默认定义从“默认”更改为我自己的定义吗。我希望页面加载,而不是加载“默认值”,它将加载我的,在本例中称为“招摇过市”: 我正在使用SpringFox和SpringBoot。这是我的招摇过市配置类: @Configuration @EnableSwagger2WebMvc @Import(SpringDataRestConfiguration.class) public class SwaggerDocumentationConfig { @Bean public Doc

我可以将默认定义从“默认”更改为我自己的定义吗。我希望页面加载,而不是加载“默认值”,它将加载我的,在本例中称为“招摇过市”:

我正在使用SpringFox和SpringBoot。这是我的招摇过市配置类:

@Configuration
@EnableSwagger2WebMvc
@Import(SpringDataRestConfiguration.class)
public class SwaggerDocumentationConfig {
    @Bean
    public Docket api() {

        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.openet.usage.trigger"))
                .paths(PathSelectors.any())
                .build();
    }

    private static Predicate<String> matchPathRegex(final String... pathRegexs) {
        return new Predicate<String>() {
            @Override
            public boolean apply(String input) {
                for (String pathRegex : pathRegexs) {
                    if (input.matches(pathRegex)) {
                        return true;
                    }
                }
                return false;
            }
        };
    }

    @Bean
    WebMvcConfigurer configurer () {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addResourceHandlers (ResourceHandlerRegistry registry) {
                registry.addResourceHandler("/config/swagger.json").
                        addResourceLocations("classpath:/config");
                registry
                        .addResourceHandler("swagger-ui.html")
                        .addResourceLocations("classpath:/META-INF/resources/");
                registry
                        .addResourceHandler("/webjars/**")
                        .addResourceLocations("classpath:/META-INF/resources/webjars/");
            }
        };
    }
}
@配置
@EnableSwagger2WebMvc
@导入(SpringDataRestConfiguration.class)
公共类SwaggerDocumentationConfig{
@豆子
公开摘要api(){
返回新摘要(DocumentationType.SWAGGER_2)
.选择()
.api(RequestHandlerSelectors.basePackage(“com.openet.usage.trigger”))
.path(路径选择器.any())
.build();
}
私有静态谓词matchPathRegex(最终字符串…pathRegexs){
返回新谓词(){
@凌驾
公共布尔应用(字符串输入){
for(字符串pathRegex:pathRegexs){
if(input.matches(pathRegex)){
返回true;
}
}
返回false;
}
};
}
@豆子
WebMvcConfigurer配置器(){
返回新的WebMVCConfigureAdapter(){
@凌驾
public void addResourceHandlers(ResourceHandlerRegistry注册表){
registry.addResourceHandler(“/config/swagger.json”)。
addResourceLocations(“类路径:/config”);
登记处
.addResourceHandler(“swagger ui.html”)
.addResourceLocations(“类路径:/META-INF/resources/”;
登记处
.addResourceHandler(“/webjars/**”)
.addResourceLocations(“classpath:/META-INF/resources/webjars/”;
}
};
}
}

改变这种行为是可能的,但它看起来更像是一种黑客行为

SwaggerResourcesProvider
负责为下拉列表提供信息。首先,实现这个接口。其次,将
Primary
注释添加到类中,以成为应该使用的主实现,而不是默认的
InMemorySwaggerResourcesProvider
类。但重用InMemorySwaggerResourcesProvider提供的定义仍然有意义,这就是为什么应该注入它

最后一部分是实现重写的
get
方法并更改为要显示的列表。此示例应仅显示一个名为
swagger
的定义

// other annotations
@Primary
public class SwaggerDocumentationConfig implements SwaggerResourcesProvider { 
   private final InMemorySwaggerResourcesProvider resourcesProvider;

   @Inject
   public MySwaggerConfig(InMemorySwaggerResourcesProvider resourcesProvider) {
       this.resourcesProvider = resourcesProvider;
   }

   @Override
   public List<SwaggerResource> get() {
       return resourcesProvider.get().stream()
           .filter(r -> "swagger".equals(r.getName()))
           .collect(Collectors.toList());
   }

   // the rest of the configuration
}
//其他注释
@初级的
公共类SwaggerDocumentationConfig实现SwaggerResourcesProvider{
私人最终InMemorySwaggerResourcesProvider resourcesProvider;
@注入
公共MySwaggerConfig(InMemorySwaggerResourcesProviderResourcesProvider){
this.resourcesProvider=resourcesProvider;
}
@凌驾
公共列表get(){
返回resourcesProvider.get().stream()
.filter(r->“swagger”.equals(r.getName()))
.collect(Collectors.toList());
}
//配置的其余部分
}

我刚刚在控制器中执行了重定向:

@RequestMapping(value = "/", method = RequestMethod.GET)
public void redirectRootToSwaggerDocs(HttpServletResponse response) throws IOException {
    response.sendRedirect("/my-api/swagger-ui.html?urls.primaryName=swagger");
}