現在,我在Spring 4.中使用@ControllerAdvice。*。 使用beforeBodyWrite方法。我可以知道在@ControllerAdvice中調用了哪個控制器嗎?
在控制器類中創建自定義註釋。 在@ControllerAdvice處理時獲取控制器的信息。
我想知道來自什麼是控制器類的請求。
但是,我不知道解決方案。
任何幫助。?
感謝
現在,我在Spring 4.中使用@ControllerAdvice。*。 使用beforeBodyWrite方法。我可以知道在@ControllerAdvice中調用了哪個控制器嗎?
在控制器類中創建自定義註釋。 在@ControllerAdvice處理時獲取控制器的信息。
我想知道來自什麼是控制器類的請求。
但是,我不知道解決方案。
任何幫助。?
感謝
雖然你的問題沒有明確說明是什麼目的你正在實現,爲什麼你需要創建一個自定義註解我會後你一些指導說明如何確定的源您RuntimeException
內ControllerAdvice
考慮下列休息控制器:
@RestController
public class CARestController {
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String testException() {
throw new RuntimeException("This is the first exception");
}
}
@RestController
public class CAOtherRestController {
@RequestMapping(value = "/test-other", method = RequestMethod.GET)
public String testOtherException() {
throw new RuntimeException("This is the second exception");
}
}
哪個都拋出一個異常,我們可以通過捕獲該異常下面ControllerAdvice
並使用堆棧跟蹤確定異常的來源。
@ControllerAdvice
public class CAControllerAdvice {
@ExceptionHandler(value = RuntimeException.class)
protected ResponseEntity<String> handleRestOfExceptions(RuntimeException ex) {
return ResponseEntity.badRequest().body(String.format("%s: %s", ex.getStackTrace()[0].getClassName(), ex.getMessage()));
}
}
這是端點的輸出如何看:
我的建議是,與其這樣做,你聲明自己的一套異常,然後抓住他們您的控制器建議,與他們被拋出的位置無關:
public class MyExceptions extends RuntimeException {
}
public class WrongFieldException extends MyException {
}
public class NotFoundException extends MyException {
}
@ControllerAdvice
public class CAControllerAdvice {
@ExceptionHandler(value = NotFoundException .class)
public ResponseEntity<String> handleNotFound() {
/**...**/
}
@ExceptionHandler(value = WrongFieldException .class)
public ResponseEntity<String> handleWrongField() {
/**...**/
}
}
你想幹什麼SH? 'beforeBodyWrite()'在'ResponseBodyAdvice'中。你想知道在那裏執行的控制器?如果是這樣,爲什麼? – Kayaman
我需要知道控制器的註釋。然後創建自定義註記類,在控制器類的方法級別定義註記類。原因,我需要在messageConverter執行之前通過註釋來重置數據。 –
一個非常不好的問題,請先閱讀本頁,然後編輯您的問題:https://stackoverflow.com/help/how-to-ask – Ibo