如何在Spring控制器方法的@ Valid / @ Validated注释之前执行Spring方面的执行?

时间:2016-09-01 11:59:50

标签: spring validation aop spring-aop

我有这个服务/控制器方法:

public ResponseEntity<PolicyDTO> addPolicy(@Valid @RequestBody PolicyDTO policy)
        throws InternalServerException, BadRequestException {
    log.debug("Adding a new policy");
}

注意方法参数中的@Valid注释

对于这个控制器,我们定义了以下方面类:

@Aspect
@Component
public class BackwardsCompatibilityHandler {
@Around("execution(* com.company.PolicyController.addPolicy(..))")
public Object ControllerMethod(JoinPoint jp) 
{
    // DO Code before and after the method call
}

这个方面/代理背后的主要原因是拦截方法调用并对输入参数/返回结果进行一些前/后处理。

我们现在面临的主要问题是在实际执行代码之前和之后的方面之前处理 @Valid 注释。

关于如何在我们的AOP代码中运行验证检查的任何想法?我知道有一种方法可以通过手动调用方法中的验证器来实现这一点,但是不想触及现有代码那么多...所以除此之外的任何想法,如果有......

现在执行的顺序是:

  1. 验证检查 - 由@Valid anotation触发
  2. 自己的代码 - 方面 - 在方法调用之前
  3. 实际方法调用
  4. 自己的代码 - 方面 - 在方法调用之后
  5. 我们希望有更多的东西(首先是我们的代码,然后是有效的注释):

    1. 自己的代码 - 方面 - 在方法调用之前
    2. 验证检查 - 由@Valid anotation触发
    3. 实际方法调用
    4. 自己的代码 - 方面 - 在方法调用之后
    5. 请跳过编译器错误等,此代码仅用于演示目的,它不是真正的代码:)

0 个答案:

没有答案
相关问题