Избегайте дублирования кода Spring Boot Controller - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть следующее 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 голосов
/ 10 сентября 2018

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

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

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

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

0 голосов
/ 10 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...