You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将RequestMapping的值设为properties文件中定义的字符串数组?

解决@RequestMapping从配置文件读取多路径的问题

你之前的写法无效,是因为直接把逗号分隔的字符串放进数组后,Spring会将整个字符串当成单个请求路径(比如会尝试匹配包含, /value2这类字符的路径),自然匹配不上实际请求。

下面是两种可行的实现方式:

方式一:直接在注解中使用属性占位符

Spring支持在@RequestMapping的value属性中直接使用${}占位符,并且会自动将配置文件中逗号分隔的字符串解析为字符串数组。

  1. 保持properties配置不变:
request.mapping=/value1/**, /value2, /value3, /value4, /value5
  1. 修改Controller代码:
@RestController
public class YourController {

    @RequestMapping(value = "${request.mapping}")
    public ResponseEntity<String> proxyWithBody(@RequestBody String payload, HttpServletRequest request) {
        return proxy(request, payload);
    }
}

方式二:使用@ConfigurationProperties绑定配置

如果需要更灵活的配置管理,可以用配置类绑定属性,再通过SpEL表达式引用:

  1. 定义配置类:
@Configuration
@ConfigurationProperties(prefix = "request")
public class RequestMappingConfig {
    private String[] mapping;

    // getter和setter
    public String[] getMapping() {
        return mapping;
    }

    public void setMapping(String[] mapping) {
        this.mapping = mapping;
    }
}
  1. 在Controller中通过SpEL引用配置:
@RestController
public class YourController {

    @RequestMapping(value = "#{@requestMappingConfig.mapping}")
    public ResponseEntity<String> proxyWithBody(@RequestBody String payload, HttpServletRequest request) {
        return proxy(request, payload);
    }
}

两种方式都能让Spring正确识别多个请求路径,解决方法不被调用的问题。

内容的提问来源于stack exchange,提问作者ceepan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:25:58