在@OnTransition注解的方法中获取StateContext
Get StateContext in @OnTransition annotated method
在Spring Statemachine reference doc中是这个示例代码:
@WithStateMachine
static class Bean1 {
@OnTransition(source = "S1", target = "S2")
public void fromS1ToS2() {
}
}
是否可以从使用 @OnTransition
注释的方法访问 StateContext
对象?也许我不明白注释的正确用法...我认为它可以以与 Action
类似的方式使用,在那里我可以访问存储在 ExtendedState
.[=16 中的数据=]
看来我完全忘记了在我们的文档中添加这些特定信息。我们无法访问 StateContext
,但 event headers
和 ExtendedState
可用。
MethodAnnotationTests 中有一个单元测试。
简而言之,处理器处理方法调用会检测参数类型 ExtendedState
和 Map
(如果它用 @EventHeaders
注释)。我也一直在考虑通过方法参数以相同的方式支持 StateContext
,但还没有做到这一点。
@WithStateMachine
public class Bean2 {
@OnTransition(source = "S1", target = "S2")
public void method1(@EventHeaders Map<String, Object> headers, ExtendedState extendedState) {
}
}
我也会为此整理文档,感谢您指出这一点!
他们的文档说:
A method annotated with @OnTransition may accept a parameter of type
ExtendedState, Map if map argument itself is annotated with
EventHeaders, StateMachine, Message or Exception.
在Spring Statemachine reference doc中是这个示例代码:
@WithStateMachine
static class Bean1 {
@OnTransition(source = "S1", target = "S2")
public void fromS1ToS2() {
}
}
是否可以从使用 @OnTransition
注释的方法访问 StateContext
对象?也许我不明白注释的正确用法...我认为它可以以与 Action
类似的方式使用,在那里我可以访问存储在 ExtendedState
.[=16 中的数据=]
看来我完全忘记了在我们的文档中添加这些特定信息。我们无法访问 StateContext
,但 event headers
和 ExtendedState
可用。
MethodAnnotationTests 中有一个单元测试。
简而言之,处理器处理方法调用会检测参数类型 ExtendedState
和 Map
(如果它用 @EventHeaders
注释)。我也一直在考虑通过方法参数以相同的方式支持 StateContext
,但还没有做到这一点。
@WithStateMachine
public class Bean2 {
@OnTransition(source = "S1", target = "S2")
public void method1(@EventHeaders Map<String, Object> headers, ExtendedState extendedState) {
}
}
我也会为此整理文档,感谢您指出这一点!
他们的文档说:
A method annotated with @OnTransition may accept a parameter of type ExtendedState, Map if map argument itself is annotated with EventHeaders, StateMachine, Message or Exception.