将请求传递给宏的不同方式
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
宏可以通过从有效载荷或直接从调度程序注入来获取请求。但是,如果我需要使用两种方式将请求传递给同一个宏怎么办?如果它包含 @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