我正在使用SpringDoc1.4和Spring-Boot2.3,在OperationCustomizer类中,我需要从应用程序属性文件中读取值。但每次都将字段初始化为null
。规格如下
应用程序.属性
application.security.authorization=true
OperationCustomizer类
java prettyprint-override">@Component
public class GlobalHeaderAdder implements OperationCustomizer {
@Value("${application.security.authorization:true}")
Boolean authFilterEnabled; // <---- Initialized to NULL
@Override
public Operation customize(Operation operation, HandlerMethod handlerMethod) {
System.out.println("____________________________\n" + authFilterEnabled + "\n+++++++++++++++++++++++++");
if (authFilterEnabled) {
operation.addParametersItem(new Parameter().$ref("#/components/parameters/ClientID"));
}
operation.addSecurityItem(new SecurityRequirement().addList("Authorization"));
List<Parameter> parameterList = operation.getParameters();
if (parameterList != null && !parameterList.isEmpty()) {
Collections.rotate(parameterList, 1);
}
return operation;
}
}
@Bean
public GroupedOpenApi hideApis() {
return GroupedOpenApi.builder().group("default")
.pathsToExclude("/api/v2/**", "/v2/**")
.pathsToMatch("/api/v1/**", "/v1/**")
.addOperationCustomizer(new GlobalHeaderAdder())
.build();
}
代码的一个问题是,您通过调用构造函数自己启动globalheaderadder
,但在这种情况下,它不是spring bean,因此,@value(“${application.security.authorization:true}”)
和所有其他spring注释将无法工作。
因此,要解决这个问题,您应该注入globalheaderadder
bean来创建hideAPI
:
@Bean
public GroupedOpenApi hideApis(GlobalHeaderAdder globalHeaderAdder) {
return GroupedOpenApi.builder().group("default")
.pathsToExclude("/api/v2/**", "/v2/**")
.pathsToMatch("/api/v1/**", "/v1/**")
.addOperationCustomizer(globalHeaderAdder)
.build();
}
或者以以下方式创建一个bean,您将能够以上述方式将其注入hideapis
(对于此选项,您不需要在类globalheaderadder
下使用@component
):
@Bean
public GlobalHeaderAdder globalHeaderAdder() {
return new GlobalHeaderAdder();
}
我正在将一个现有的多模块maven项目迁移到spring boot 2.6.1,我已经填充了这个应用程序。其中一个模块(具有SpringBootApplication入口点和SpringBootMaven插件的模块)的resources文件夹中的属性。我可以通过应用程序环境从项目中的任何模块访问这些属性。但是,使用@Value绑定属性不起作用 以下是我的项目结构 为什么@Configuration
我在src/main/resources下创建了2个文件: 应用程序。属性 第一个具有从env变量中获取值的属性,而后者具有固定值。 根据这里的具体情况,我以这样的方式推出了Spring靴: 然而,不会产生任何影响,并且应用程序是局部的。属性似乎被忽略。 有什么提示吗?
我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud
service类有一个方法可以进行查询,从Application.properties文件中填充了属性的成员变量中获取查询字符串: 第二个SpringBoot应用程序是一个具有REST控制器的Web应用程序。这些控制器公开调用CaseInvocationAPI库(特别是CaseInvocationService类)的endpoint。 我遇到的问题是,当SpringBoot WEBAPPLICAT
我有一个SpringBoot项目(maven/java8)。 我想通过Maven配置文件(dev.properties|prod.properties)过滤src/main/Resources/application.properties中的一些自定义变量 Maven命令: 应用属性: 开发属性: prod.properties: pom.xml:
hybris为面值提供了Solr Sort属性。我可以在HMC中看到每个solr项属性,我们可以设置它的排序行为。 我想用弹劾来设定这种类型。有一个属性(字符串类型),它保存着所选提供者的值,因为我必须在Impex中提供字符串类型,这样它才能工作。 请帮忙。