Java 如何在属性文件中使用贴图
如何将其映射到属性文件中 我正在努力追随春天的云之门 但是,我们使用application.propertiesJava 如何在属性文件中使用贴图,java,spring,spring-cloud,Java,Spring,Spring Cloud,如何将其映射到属性文件中 我正在努力追随春天的云之门 但是,我们使用application.properties spring: cloud: gateway: globalcors: corsConfigurations: '[/**]': allowedOrigins: "https://docs.spring.io" allowedMethods: - GET
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "https://docs.spring.io"
allowedMethods:
- GET
我尝试过不同的变体,但都无济于事:
spring.cloud.gateway.globalcors.cors-configurations./**.allowed-origin
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowed-origin
我得到一个例外:
***************************应用程序无法启动
说明: 无法在下绑定属性 'spring.cloud.gateway.globalcors.cors配置。允许的来源' 到org.springframework.web.cors.cors配置:
Reason: No converter found capable of converting from type [java.lang.String] to type
[org.springframework.web.cors.corscoConfiguration]
行动:
更新应用程序的配置
请注意,此代码使用的是Spring Cloud Hoxton.M3。我知道有人可能会认为,根据Spring指南的已知实现可能是答案,但事实并非如此,因为SC网关不再使用HttpServlet
更新:
根据马可斯·巴贝罗的说法,这是可行的。显然,Eclipse不能将此数据类型理解为属性。现在,您必须处理忽略解析错误的问题
spring.cloud.gateway.globalcors.corsConfigurations.[/**].allowedOrigins=*
spring.cloud.gateway.globalcors.corsConfigurations.[/**].allowedMethods=*
spring.cloud.gateway.globalcors.corsConfigurations.[/**].allowCredentials=true
无法使用属性文件设置这些属性。而是使用Spring配置设置这些属性,如下所示:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/test-javaconfig").allowedOrigins("http://localhost:9000");
}
};
}
此外,post可能会有所帮助。您不能使用属性文件设置这些属性。而是使用Spring配置设置这些属性,如下所示:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/test-javaconfig").allowedOrigins("http://localhost:9000");
}
};
}
此外,post可能会有所帮助。我没有尝试过,但我认为您可以这样使用它:
spring.cloud.gateway.globalcors.corsConfigurations.[/**].allowedOrigins="https://docs.spring.io"
spring.cloud.gateway.globalcors.corsConfigurations.[/**].allowedMethods[0]=GET
如果它不起作用,请尝试从
[/**]
中删除方括号,导致/**
我没有尝试过,但我认为您可以这样使用它:
spring.cloud.gateway.globalcors.corsConfigurations.[/**].allowedOrigins="https://docs.spring.io"
spring.cloud.gateway.globalcors.corsConfigurations.[/**].allowedMethods[0]=GET
如果不起作用,请尝试从
[/**]
中删除方括号,从而导致/**
此代码来自较旧的Spring Finchley代码。我用的是Hoxton.M3。这些类已经不存在了。在我共享的链接中,它也谈到了同样的内容。但关键是你必须使用CORS而不是属性的配置。我很抱歉。我不知道如何在Hoxton上做到这一点,否则我不会问这个问题。值得注意的是,在我过渡到SC网关之前,我的旧代码使用了CORSCOConfiguration。这导致启动期间出现NoClassDefinition例外,因为SC网关不再使用Http Web Servlet。此代码来自较旧的Spring Finchley代码。我用的是Hoxton.M3。这些类已经不存在了。在我共享的链接中,它也谈到了同样的内容。但关键是你必须使用CORS而不是属性的配置。我很抱歉。我不知道如何在Hoxton上做到这一点,否则我不会问这个问题。值得注意的是,在我过渡到SC网关之前,我的旧代码使用了CORSCOConfiguration。这导致启动期间出现NoClassDefinition例外,因为SC网关不再使用Http Web Servlet。能否在某处共享示例应用程序?:)您可以从Initializer(2.2.0)下载带有SC网关依赖项的密钥,只需将这些密钥添加到中。自从我开始工作以来,这一切都是赤裸裸的。奇怪的是,我刚刚开始了,应用程序在1.869秒内启动了并启动了DemoApplication(JVM运行时间为2.447)
您是否在使用Hoxton
作为Spring Cloud?我使用的是RC1,我已经添加了我在上面发布的密钥,可以在某处共享一个示例应用程序吗?:)您可以从Initializer(2.2.0)下载带有SC网关依赖项的密钥,只需将这些密钥添加到中。我刚开始的时候就非常简单。奇怪的是,我刚开始了,应用程序在1.869秒内启动了并启动了DemoApplication(JVM运行时间为2.447)
您是否在使用Hoxton
作为Spring Cloud?我使用的是RC1,我已经添加了上面发布的密钥,它起作用了。如果您对该行为持怀疑态度,可以在CorsConfiguration中为其中一个setter添加断点。如果您对该行为持怀疑态度,可以在CorsConfiguration中为其中一个setter添加断点企业配置。