避免代码重复Spring Boot Controller

时间:2018-09-10 09:18:16

标签: java spring-boot

我有以下RestController(春季启动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用法。

我的问题是,如何避免在catchfinally子句中重复代码?

2 个答案:

答案 0 :(得分:3)

您可以使用@ControllerAdvice@ExceptionHandler

@ControllerAdvice:默认情况下,@ControllerAdvice将应用于所有使用@Controller注释的类。如果您想更具体一点,可以通过编写一些属性,例如@ControllerAdvice("my.org.package")

@ExceptionHandler:与@ControllerAdvice一起使用@ExceptionHandler提供了全局错误处理。您可以编写注释@ExceptionHandler(IllegalArgumentException.class)来处理IllegalArgumentException的所有异常。

For more details you can refer this :

答案 1 :(得分:0)

使用@ControllerAdvice@ExceptionHandlerlink