Избегайте дублирования кода 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 ??

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
485
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

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

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

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

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

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