我已經工作正常春天控制器,在那裏我有一個下面的方式映射春季控制器:聯合Spring註解定製標註不起作用
@RequestMapping(
value = "/users"
consumes = MimeTypeUtils.APPLICATION_JSON_VALUE,
produces = MimeTypeUtils.APPLICATION_JSON_VALUE,
method = RequestMethod.GET)
@ResponseBody
@ResponseStatus(HttpStatus.OK)
public UserResponse retrieveUsers() {
return new UserResponse();
}
@RequestMapping(
value = "/contracts"
consumes = MimeTypeUtils.APPLICATION_JSON_VALUE,
produces = MimeTypeUtils.APPLICATION_JSON_VALUE,
method = RequestMethod.GET)
@ResponseBody
@ResponseStatus(HttpStatus.OK)
public ContractResponse retrieveContracts() {
return new ContractResponse();
}
這工作得很好,GET
請求服務所接受的方法,在例如POST
的情況下,我正在接收適當的405
狀態碼。
現在我想介紹自定義組合註釋,而不是在每個方法中都有相同的批註註釋。
我的自定義註解的樣子,
@RequestMapping(
consumes = MimeTypeUtils.APPLICATION_JSON_VALUE,
produces = MimeTypeUtils.APPLICATION_JSON_VALUE,
method = RequestMethod.GET)
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Get {}
因此,我改變方法
@Get
@RequestMapping(value = "/users")
public UserResponse retrieveUsers() {
return new UserResponse();
}
在這種情況下,我可以看到,無論何種類型的請求,我送/users
它是正確送達。例如,即使我做POST
,我看到的迴應。所以@RequestMapping
不能正常工作。
我在這裏做錯了什麼?使用自定義組合註釋可以使控制器正常工作嗎?
你爲什麼認爲你的'@ Get'會這樣工作? –
爲什麼不呢?事實上,它正在工作,但不正確。例如,至少它會正確返回狀態碼。我假設當我把'''@RequestMapping(value =「/ users」)'''它實際上覆蓋了我自定義註釋中的映射,因爲'''Get'''中的其他註釋實際上正在工作。 – vtor
您是否嘗試將@RequestMapping與一個註釋相結合,並查看是否解決了該問題? – gonzo