首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring状态机注释@WithStateMachine不工作

Spring状态机注释@WithStateMachine不工作
EN

Stack Overflow用户
提问于 2017-04-13 13:09:04
回答 1查看 1.4K关注 0票数 1

我只是在使用spring状态机@WithStateMachine时遇到了一个问题。

@WithStateMachine当我在由@EnableStateMachine注释的类中定义的内部类上使用它时就能工作,但是当我在其他地方定义类时,它似乎不起作用。这是我的代码:

代码语言:javascript
复制
@Configuration@EnableStateMachine public class StateMachineConfig extends EnumStateMachineConfigurerAdapter<States, Events> {
@Override
public void configure(StateMachineStateConfigurer<States, Events> states)
    throws Exception {
    states
        .withStates()
        .initial(States.UNPAID)
        .states(EnumSet.allOf(States.class));
}

@Override
public void configure(StateMachineTransitionConfigurer<States, Events> transitions)
    throws Exception {
    transitions
        .withExternal()
        .source(States.UNPAID).target(States.WAITING_FOR_RECEIVE)
        .event(Events.PAY)
        .and()
        .withExternal()
        .source(States.WAITING_FOR_RECEIVE).target(States.DONE)
        .event(Events.RECEIVE);
}

@Override
public void configure(StateMachineConfigurationConfigurer<States, Events> config)
    throws Exception {
    config
        .withConfiguration()
        .autoStartup(true);
}

@WithStateMachine
public class Action {
    private Logger logger = LoggerFactory.getLogger(getClass());

    @OnTransition(target = "UNPAID")
    public void create() {
        logger.info("UNPAID");
    }

    @OnTransition(source = "UNPAID", target = "WAITING_FOR_RECEIVE")
    public void pay() {
        logger.info("WAITING_FOR_RECEIVE");
    }

    @OnTransition(source = "WAITING_FOR_RECEIVE", target = "DONE")
    public void receive() {
        logger.info("DONE");
    }
}}

但是,当我在另一个类文件中定义Action时,它不是工作

我的水壶

代码语言:javascript
复制
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-messaging</artifactId>
            <version>1.2.3.RELEASE</version>
        </dependency><dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-13 21:21:04

@WithStateMachine是一个具有spring @Component的元注释。检查您的Action类是否被扫描或手动创建为@Bean

然后,它存在于应用上下文中,并且状态机可以找到它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43393236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档