Избегайте дублирования кода spring boot controller

У меня есть следующий RestController (Spring boot 2.0.4) с несколькими методами, которые следуют той же структуре, что и execute. Они могут указывать на другой url или аннотироваться @GetMapping вместо @PostMapping:

@RestController
public class Controller {
    private final DataAccessLayer dal;

    @PostMapping("myUrl_1") execute(@RequestBody String param) {

        try {
            ... 
        } catch (CustomException e) {
            ...
        } catch (CustomException_2 e_2) {
            ...
        } finally {
            ...
        }
    }
    ...
}

Единственная разница заключается в использовании param и dal.

Мой вопрос: как я могу избежать дублирования кода в пунктах catch и finally ??

2
0
485
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

используйте @ControllerAdvice и @ExceptionHandler. ссылка

Ответ принят как подходящий

Вы можете использовать @ControllerAdvice и @ExceptionHandler.

@ControllerAdvice: по умолчанию @ControllerAdvice будет применяться ко всем классам, использующим аннотацию @Controller. Если вы хотите, чтобы это было более конкретным, вы можете сделать это, написав некоторые свойства, например @ControllerAdvice("my.org.package")

@ExceptionHandler: Использование @ControllerAdvice вместе с @ExceptionHandler обеспечивает глобальную обработку ошибок. Вы можете написать аннотации @ExceptionHandler(IllegalArgumentException.class), которые будут обрабатывать все исключения для IllegalArgumentException.

Для получения дополнительной информации вы можете обратиться к этому:

Другие вопросы по теме