小编VIJ*_*MAR的帖子

使用属性占位符表达式将 String[] 从属性文件加载到 @CrossOrigin 的 origins 字段

在我的 Spring Boot 应用程序中,我有以下控制器

@RestController(value = "ProjectController")
@CrossOrigin(origins = {"${app.api.settings.cross-origin.urls}"})
public class ProjectController {
   // some request mapping methods
}
Run Code Online (Sandbox Code Playgroud)

该属性已经是一个键,在application.properties文件app.api.settings.cross-origin.urls中具有逗号分隔的有效 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 来实现,使用@ValueList<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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这将是具有应用程序广泛适用性的全局配置。我想坚持使用更细粒度的@CrossOrigin基于注释的 CORS 配置。

所以我在下面清楚地提出了我的问题。

是否可以使用属性plcaholer表达式()将属性文件中的逗号分隔值注入具有相同类型的spring注释字段,即?????? …

spring spring-boot spring-web property-placeholder application.properties

5
推荐指数
1
解决办法
2535
查看次数