Spring Boot如何在@CrossOrigin注解中引用application.properties跨域配置
解决Spring Boot @CrossOrigin注解引用配置文件中多CORS源的问题
场景说明
多环境部署的Spring Boot应用,需配置多个CORS源支持Web前端访问。原本直接在@CrossOrigin注解中传入逗号分隔的域名列表,无需对外暴露的控制器则不添加该注解;但随着域名列表变长,硬编码在注解里维护起来太麻烦,希望将配置移到application.properties中统一管理。
实现步骤
在配置文件中定义CORS源
在application.properties(或对应环境的配置文件,如application-prod.properties)中添加配置项:allowed.cors.origins=https://domain-a.com,https://domain-b.com,https://test.domain.com在@CrossOrigin注解中直接引用配置
无需额外处理,直接在注解的origins参数中使用${配置项键名}即可读取配置值:@RestController @CrossOrigin(origins = "${allowed.cors.origins}") public class OpenApiController { // 对外开放的接口方法 }代码中按需注入配置值
如果业务逻辑中需要用到这个CORS源列表,还可以通过@Value注解注入后使用:@RestController @CrossOrigin(origins = "${allowed.cors.origins}") public class OpenApiController { @Value("${allowed.cors.origins}") private String allowedCorsOrigins; // 示例:将字符串分割为域名列表 private List<String> parseCorsOrigins() { return Arrays.asList(allowedCorsOrigins.split(",")); } }
额外说明
- 无需对外访问的控制器保持不添加
@CrossOrigin注解,自然会限制跨域请求。 - 多环境部署时,只需在对应环境的配置文件中修改
allowed.cors.origins的值即可,无需改动业务代码。
内容的提问来源于stack exchange,提问作者pixel
相关产品推荐
相关产品推荐

