在我的 Spring Boot 应用程序中,我有以下控制器
@RestController(value = "ProjectController")
@CrossOrigin(origins = {"${app.api.settings.cross-origin.urls}"})
public class ProjectController {
// some request mapping methods
}
该属性app.api.settings.cross-origin.urls
已经是在application.properties文件中具有逗号分隔的有效 URL 的键,例如
app.api.settings.cross-origin.urls=http://localhost:3000, http://localhost:7070
这种方法一直有效,直到我只有一个值,比如
app.api.settings.cross-origin.urls=http://localhost:3000
但不适用于逗号分隔值。里面的origins
字段仍然@CrossOrigin
是类型String[]
,它不会String[]
自动转换为。我的意思是应该有一些方法来实现框架提供的这一点。不是解决方法。我可以使用逗号分隔的 url 从属性文件中使用@Value
到 aList<String>
或String[]
作为@Configuration
类中的字段,如下所示
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Value("${app.api.settings.cross-origin.urls}")
private String[] consumerUiOrigins;
@Override
public void addCorsMappings(CorsRegistry registry) {
registry
.addMapping("/api/**")
.allowedOrigins(consumerUiOrigins);
}
}
但这将是一个具有应用程序广泛适用性的全局配置。我想坚持更细粒度@CrossOrigin
的基于注释的 CORS 配置。
所以我把我的问题清楚地放在下面。
是否可以将属性文件中的逗号分隔值作为String[]
使用属性 plcaholer 表达式 ( ${*}
) 注入具有相同类型的 spring 注释字段中,即String[]
????? 如果是那么如何???如果没有,那么我们可以调整一些核心框架类来实现这个吗???任何人请帮助....
PS - 请不要将我的问题标记为在 Java 中使用 CrossOrigin 注释或 Spring-Config XML 中的重复使用 Spring 属性
我的问题更多是关于在 spring 注释字段中使用属性占位符表达式,这些字段具有多元素类型,String[]
而不是关于 spring 应用程序中 CORS 的配置。