如何手动配置RestController的请求映射

时间:2018-06-17 04:45:28

标签: spring spring-boot spring-restcontroller spring-rest

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

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

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

}

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

所以,它是这样的:

@Configuration
public class MyConfiguration {

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

  // ???
}

我该怎么做?

2 个答案:

答案 0 :(得分:0)

这是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";
    }

答案 1 :(得分:-1)

您可以使用spring表达式语言(Sepl)。这样,您可以在application.properties文件中提供映射字符串,并按如下所示配置请求映射:

@RestController
@RequestMapping("/${something-mapping:something}")
public class MyRestController {

}

注意:冒号后的值是在something-mapping文件中找不到application.properties时使用的默认值