Java 如何使用openapi ui和承载令牌(jwt)在swagger ui中激活授权按钮?
我的任务是在swagger ui站点中启用授权按钮。我使用springdoc openapi ui依赖项中的@Operation或@ApiResponse等注释制作REST控制器的文档。现在,我应该在招摇过市界面中启用授权按钮 我有以下介绍: 但在这里,我必须将springfox包含到我的maven依赖项中,但当我这样做时,我会得到以下异常: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
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