我正在使用弹簧状态计算机,并希望使用@WithStateMachine,@Ontransition,@OnstateChanged添加功能和状态更改,以尽可能简单地将课程保持在@enablestatemachine中。不过,我从来没有工作过,经过一些反复试验,我意识到必须在状态机器之前创建@withstatemachine bean,但是该依赖关系并未自动解决。
我项目的有趣部分基本上归结为以下内容:
package org.myorg.a
@Component
public class MyComponent {
@Autowired
StateMachine<States, Events> sm;
}
package org.myorg.b
@WithStateMachine
public class Listener {
@OnTransition
public void anyTransition() {}
}
myComponent,因此将在侦听器之前创建状态机器,因为Spring会在包B之前查看A包A,并且实际上没有类侦听器中的任何方法都与状态计算机相关。
我能想到的仅有的两个解决方案是
- 重命名包裹
- 用@deppenton和明确取决于所有@WithStateMachine类的@enablestatemachine类注释
我认为这两种解决方案都不好。有人有更好的解决方法吗?
希望这只是在https://github.com/spring-projects/spring-statemachine/issues/232。