我正在使用自定义代码生成器将REST合约转换为Java接口。下面是一个生成的资源Java接口的示例。
@Generated(
date = "2018-01-30T11:56:25.156Z",
comments = "Specification filename: country.v1.json",
value = "GENERATOR"
)
@RequestMapping("/v1/countries")
public interface CountriesResource {
@RequestMapping(
method = RequestMethod.GET,
path = "/{id}",
produces = MediaType.APPLICATION_JSON_VALUE
)
@ResponseBody
LandGetResourceModel getEntity(@PathVariable("id") String id);
}
此外,生成器为Spring创建一个@RestController
实现,以创建控制器bean。
@RestController
public class CountriesResourceImpl implements CountriesResource {
@Override
public CountryGetResourceModel getEntity(String id) {
return new CountryGetResourceModel();
}
}
到目前为止一切正常。 Spring创建了RestController bean,并且HTTP调用被正确定向到相应的Handler方法(例如getEntity
)。
问题在于,由于某种原因,Spring在接口上定义路径变量时无法解析路径变量。处理包含路径变量的所有调用,但任何路径变量的方法参数都是null
。如果我然后将PathVariable
注释添加到实现类中,Spring就能够解析相应的值。
有没有办法告诉Spring从接口方法声明中读取PathVariable
,就像它对RequestMapping
注释一样?
答案 0 :(得分:2)
不幸的是,这似乎是一个已知问题。我在这个问题上找到了the following opened Jira。可以从this answer找到一些解释。另外,在the same question中,我看到了this solution之前的答案。但是,我没有尝试过它,似乎很重。