将请求传递给宏的不同方式

Different ways to pass request to Macro

宏可以通过从有效载荷或直接从调度程序注入来获取请求。但是,如果我需要使用两种方式将请求传递给同一个宏怎么办?如果它包含 @Inject 标志,并且请求是直接从调度程序传递的,我会收到关于 "missing mapping to inject into property".

的错误

很高兴看到您的示例,但是当您想将有效负载作为注入的依赖项传递时,应按以下方式传递:

dispatcher.dispatch( MyMessage.MESSAGE, [myRequest, new ExecutionPayload(myPayload, MyPayload)] )

所以关键是你需要使用 hex.control.payload.ExecutionPayload class 作为调度的第二个参数。但是我很好奇你为什么不把两者合二为一

因此,您希望能够有时通过有效载荷向您的 Macro 传递请求,有时不通过有效载荷。在第二种情况下没有使注入失败。

为此,您可以在 属性 中添加注释:@Optional(true) 这样,如果映射不可用,注入器就不会哭了。

如您所料,如果在注入过程中缺少相应的映射,任何带有 Optional 注解的注入都不会抛出任何错误,因为那样的话,注入就变成了可选的。

你可以查看一个例子here