在我的春季启动应用程序中,我有以下控制器
@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 文件中包含逗号分隔的有效网址的密钥,例如
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[]
。
我的意思是应该有一些方法来实现框架提供的这一点。不是一个解决方法。
我可以使用@Value
将属性文件中的逗号分隔网址用作List<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);
}
}
但这将是一个具有广泛适用性的全局配置。我想坚持使用基于CORS配置的更细粒度@CrossOrigin
annoation。
所以我在下面清楚地提出了我的问题。
是否可以使用属性plcaholer表达式(String[]
)将逗号分隔值从属性文件注入${*}
到具有相同类型的{{1}的弹簧注释字段中} ?????如果是,那么如何???如果没有那么我们可以调整一些核心框架类来实现这个???任何人请帮助....
P.S。 - 请不要将我的问题标记为Use Spring Properties in Java with CrossOrigin Annotation or in Spring-Config XML
的副本我的问题更多是关于弹簧注释字段中的属性placholder表达式的使用,这些字段具有多元素类型,如String[]
,而不是春季应用程序中CORS的配置。
答案 0 :(得分:0)
尝试在application.properties中执行以下操作:
app.api.settings.cross-origin.urls="http://localhost:3000","http://localhost:7070"