2016-12-07 5 views
0

StateMachineFactory을 사용하여 동적 인스턴스화에 대해 여러 개의 StateMachine 구성을 포함하고자합니다. 그러나 @EnableStateMachineFactory 주석을 사용하면 공장 이름을 지정할 수 있습니다. 각 Config의 이름을 어떻게 지정합니까 (즉, EnumStateMachineConfigurerAdapter)?Spring StateMachine 설정 : @EnableSateMachineFactory를 사용할 때의 StateMachine 이름 지정

그렇지 않으면 가능한 경우 구성 정의 내에서 setMachineID 메서드를 사용하는 방법의 예가 있으면 유용합니다.

+0

인라인 코드가있는 경우 백틱 ('\'')으로 표시하십시오. 이렇게하면 질문을 더 쉽게 읽을 수 있습니다. – Chris

답변

2

스프링 @Configuration 클래스를 사용하여 이러한 enable 주석을 사용하면 응용 프로그램 컨텍스트에 등록 된 bean 이름을 간단히 정의 할 수 있습니다. 가장 쉬운은 예제와 함께 설명합니다 :

@EnableStateMachine 

StateMachinestateMachine한다. 콩 fooMachine

@EnableStateMachine(name = "fooMachine") 

StateMachine. 콩 별칭 fooMachine와 콩 stateMachine

@EnableStateMachine(name = {StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE, "fooMachine"}) 

StateMachine. 콩 stateMachineFactory

@EnableStateMachineFactory 

StateMachineFactory.

@EnableStateMachineFactory(name = "fooMachineFactory") 

StateMachineFactory (콩). 콩 별칭 fooMachineFactory와 콩 stateMachineFactory

@EnableStateMachineFactory(name = {StateMachineSystemConstants.DEFAULT_ID_STATEMACHINEFACTORY, "fooMachineFactory"}) 

StateMachineFactory.

@Configuration 클래스 (StateMachineConfigurerAdapter를 확장)의 이름은 중요하지 않습니다. Spring에서의 생각은 @Configuration 클래스도 bean으로 생성된다. 아래 클래스는 Spring Application Context에 bean myConfig.MachineFactoryConfig처럼 존재할 것이다. 스프링에서 잘못 명명 된 클래스가 bean override를 초래할 수 있다는 것을 기억해야합니다! machineId을 위해 제공 무엇

public class MyConfig { 
    @Configuration 
    @EnableStateMachineFactory 
    public static class MachineFactoryConfig extends StateMachineConfigurerAdapter<String, String> { 
    } 
} 

난 그냥 State Machine ID을 문서 도구에 새 섹션을 추가했다. (다음 릴리스가 나올 때까지 스냅 샷 빌드에만 해당)