代码之家  ›  专栏  ›  技术社区  ›  Double M

可以根据命令的类型截获命令吗?

  •  1
  • Double M  · 技术社区  · 6 年前

    Axon , Command Interceptors

    @Override
    public BiFunction<Integer, CommandMessage<?>, CommandMessage<?>> handle(List<? extends CommandMessage<?>> messages) {
        return (index, command) -> {
            // Check permissions
            return command;
        };
    }
    

    instanceof 如果语句在单个拦截器中?有没有人可以用Axon检查权限的好例子?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Steven    6 年前

    DispatchInterceptors 直接按命令有效负载类型。所以你建议做的,if blocks/switch语句,是目前你能做的最好的事情。

    尽管我不确定权限检查的粒度有多细,但您可以在命令上设置某种形式的权限注释,并在其上设置特定的值/枚举。这样,您就不必直接将有效负载类型绑定到dispatcher中,只需检查注释是否存在,如果存在,请检查它的值,以便对其执行某种权限检查。

    这很可能会导致比检查每个有效负载类型的if块/开关语句小得多的if块/开关语句。