Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用openapi ui和承载令牌(jwt)在swagger ui中激活授权按钮?_Java_Spring Boot_Swagger_Swagger Ui_Openapi - Fatal编程技术网

Java 如何使用openapi ui和承载令牌(jwt)在swagger ui中激活授权按钮?

Java 如何使用openapi ui和承载令牌(jwt)在swagger ui中激活授权按钮?,java,spring-boot,swagger,swagger-ui,openapi,Java,Spring Boot,Swagger,Swagger Ui,Openapi,我的任务是在swagger ui站点中启用授权按钮。我使用springdoc openapi ui依赖项中的@Operation或@ApiResponse等注释制作REST控制器的文档。现在,我应该在招摇过市界面中启用授权按钮 我有以下介绍: 但在这里,我必须将springfox包含到我的maven依赖项中,但当我这样做时,我会得到以下异常: 17.11.2020 19:15:46,664 ERROR [o.s.boot.SpringApplication] (main) Application

我的任务是在swagger ui站点中启用授权按钮。我使用springdoc openapi ui依赖项中的@Operation或@ApiResponse等注释制作REST控制器的文档。现在,我应该在招摇过市界面中启用授权按钮

我有以下介绍: 但在这里,我必须将springfox包含到我的maven依赖项中,但当我这样做时,我会得到以下异常:

17.11.2020 19:15:46,664 ERROR [o.s.boot.SpringApplication] (main) Application run 
failed
java.lang.NoClassDefFoundError: org/springframework/data/rest/webmvc/mapping/Associations
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137)
at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2357)
(....)
17.11.2020 19:21:00,215 ERROR [o.s.boot.SpringApplication] (main) Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'openApiConfiguration' defined in file [<PATH>/configuration/OpenApiConfiguration.class]: Unexpected exception during bean creation; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'module-name' in value "${module-name}"
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:530)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
(....)
另外,介绍中使用了apikey,但我们在应用程序中不使用apikey,我不知道如何使用它们

然后我发现以下问题似乎是我的问题:

因此,我实现了上面答案中的代码:

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;

@Configuration
public class OpenApiConfiguration {

  private final String moduleName;
  private final String apiVersion;

  public OpenApiConfiguration(
      @Value("${module-name}") String moduleName,
      @Value("${api-version}") String apiVersion) {
    this.moduleName = moduleName;
    this.apiVersion = apiVersion;
  }

  @Bean
  public OpenAPI customOpenAPI() {
    final String securitySchemeName = "bearerAuth";
    final String apiTitle = String.format("%s API", StringUtils.capitalize(moduleName));

    return new OpenAPI().addSecurityItem(new SecurityRequirement().addList(securitySchemeName))
        .components(new Components().addSecuritySchemes(securitySchemeName,
            new SecurityScheme().name(securitySchemeName)
                .type(SecurityScheme.Type.HTTP)
                .scheme("bearer")
                .bearerFormat("JWT")))
        .info(new Info().title(apiTitle)
            .version(apiVersion));
  }

}
但我得到了以下例外:

17.11.2020 19:15:46,664 ERROR [o.s.boot.SpringApplication] (main) Application run 
failed
java.lang.NoClassDefFoundError: org/springframework/data/rest/webmvc/mapping/Associations
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137)
at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2357)
(....)
17.11.2020 19:21:00,215 ERROR [o.s.boot.SpringApplication] (main) Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'openApiConfiguration' defined in file [<PATH>/configuration/OpenApiConfiguration.class]: Unexpected exception during bean creation; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'module-name' in value "${module-name}"
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:530)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
(....)
17.11.2020 19:21:00215错误[o.s.boot.SpringApplication](主)应用程序运行失败
org.springframework.beans.factory.BeanCreationException:创建名为“openApiConfiguration”的bean时出错,该名称在文件[/configuration/openApiConfiguration.class]中定义:创建bean时出现意外异常;嵌套异常为java.lang.IllegalArgumentException:无法解析值“${module name}”中的占位符“module name”
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:530)
位于org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
(....)
有人能解释一下占位符和@Value是如何工作的吗? 也许有人有更好的方法解决我的问题?我对这个话题很陌生

向你致意,并为我糟糕的英语道歉


ilikefatcats

关于问题:无法解析值“${module name}”中的占位符“module name”

也许我误解了这个问题,但这不就是缺少配置的值吗?如果您只使用字符串常量,它会工作吗

尝试使用这两个属性在类路径上添加属性文件/yaml,它应该可以工作: 模块名称=xxx api版本=xxx