java 在方法执行之前在webflux应用程序中执行自定义注解

w41d8nur  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(104)

我怎样才能避免在方面组件中使用.block()方法,同时确保在调用的方法开始执行之前完成注解?
在执行服务中的一些方法之前,我需要执行一些验证
我已经创建了一个自定义注解,可以使用它来注解要执行验证的每个方法
注解如下所示:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PerformValidationInterface{

}

我想要执行的Aspect方法如下所示:
x一个一个一个一个x一个一个二个一个x一个一个三个一个

eit6fx6z

eit6fx6z1#

我的解决方案如下所示:

@Around("execution(* *.*(..)) && @annotation(performValidation)")
public Mono doBeforeMethod(JoinPoint joinPoint, PerformValidationInterface performValidation) {
  return validationService
    .validateObject(object)
    //i am using defer becaue I don't want to evaluate the switchIfEmpty() if the validateObject() returns something 
    .switchIfEmpty(
      Mono.defer( 
        () -> anotherService.checkIfObjectExists(object)
      )
    )
    .then((Mono) joinPoint.proceed());
}

.then()-〉将等待验证逻辑(或其他逻辑)完成,THEN将调用joinPoint.proceed()
joinPoint.proceed()-〉将继续执行带注解的方法

相关问题