我希望为RestController类提供通过属性配置其映射的能力。
所以,不要在我的休息控制器中这样做:
@RestController
@RequestMapping("/something")
public class MyRestController {
}
我想将映射注入带@Configuration
注释的@Value
类,然后使用该值配置控制器类。
所以,它是这样的:
@Configuration
public class MyConfiguration {
@Value("${something-mapping}")
private String requestMapping;
// ???
}
我该怎么做?
答案 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
时使用的默认值