首页 > 解决方案 > 如何手动配置 RestController 的 Request Mapping

问题描述

我想为 RestController 类提供通过属性配置其映射的能力。

所以,不要在我的休息控制器中这样做:

@RestController
@RequestMapping("/something")
public class MyRestController {

}

我想将映射注入@Configuration带有@Value注释的类,然后使用该值配置控制器类。

所以,它会是这样的:

@Configuration
public class MyConfiguration {

  @Value("${something-mapping}")
  private String requestMapping;

  // ???
}

我怎么做?

标签: springspring-bootspring-restcontrollerspring-rest

解决方案


这是 Java 注释中的一个限制。所有这些值都应该是编译时常量。

尽管您已尝试使用static final变量进行此操作,但它无济于事。

尝试使用此实现。

@Configuration
public class MyConfiguration {
    @Value("${something-mapping}")
    private static String requestMapping;
    public static final String REQUEST_MAPPING = getRequestMapping();

    public static String getRequestMapping() {
        return requestMapping;
    }

    public void setRequestMapping(String requestMapping) {
        this.requestMapping = requestMapping;
    }
}

它在使用中给出以下错误。

@RequestMapping(MyConfiguration.REQUEST_MAPPING)  // this line gives compilation error
    public String something() {
        return "something";
    }

推荐阅读