Spring

Spring Web Flow 사용방법(예제)

메모는나의열정 2021. 4. 1. 17:50
반응형

1. 개요

Spring Web Flow는 Spring MVC를 기반으로하며 웹 애플리케이션 내에서 흐름을 구현할 수 있습니다. 프로세스 또는 일부 비즈니스 논리를 통해 사용자를 안내하는 일련의 단계를 만드는 데 사용됩니다.

이 빠른 사용방법(예제)에서는 사용자 활성화 흐름의 간단한 예 를 살펴 보겠습니다 . 사용자에게 페이지가 표시 되고 계속 하려면 활성화 버튼을 클릭하고 활성화 를 취소 하려면 취소 버튼을 클릭합니다.

여기서 가정하는 것은 이미 설정된 Spring MVC 웹 애플리케이션이 있다는 것이 아닙니다.

2. 설정

Spring Web Flow 의존성을 pom.xml 에 추가하여 시작해 보겠습니다 .

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-webflow</artifactId>
    <version>2.5.0.RELEASE</version>
</dependency>

Spring Web Flow의 최신 버전은 Central Maven Repository 에서 찾을 수 있습니다 .

3. 흐름 만들기

이제 간단한 흐름을 만들어 보겠습니다. 앞서 언급했듯이 흐름은 프로세스를 통해 사용자를 안내하는 일련의 단계입니다. 현재이 작업은 XML 기반 구성을 통해서만 수행 할 수 있습니다.

흐름의 각 단계를 상태 라고합니다 .

이 간단한 예에서는 view-state를 사용합니다 . 뷰 상태가 일치 뷰를 렌더링하는 흐름 공정이다. 뷰 상태는 앱 (의 페이지를 의미 , WEB-INF /도) 의 ID가 뷰 상태 가 참조하는 페이지의 이름 인.

또한 전환 요소를 사용할 것입니다. 전이 소자는 특히 내에서 발생하는 이벤트의 처리에 사용되는 상태 .

이 예 흐름을 위해, 우리는 세 가지 설정됩니다 뷰 상태를 더 - 활성화 , 성공실패 .

이 흐름의 프로세스는 매우 간단합니다. 시작점은 활성화 보기입니다. 는 IF 활성화 이벤트가 트리거, 그것은으로 전환해야 성공 볼 수 있습니다. 경우 취소 이벤트가 발생, 그것은으로 전환해야 실패 보기. 전환 요소는에서 일어나는 버튼 클릭 이벤트 처리 뷰 상태를 :

<view-state id="activation">
    <transition on="activate" to="success"/>
    <transition on="cancel" to="failure"/>
</view-state>

<view-state id="success" />

<view-state id="failure" />

ID 활성화로 참조 되고 WEB-INF / view / activation.jsp에 있는 초기 활성화 페이지는 activatecancel 버튼이 두 개있는 간단한 페이지입니다 . 버튼을 클릭하면 전환이 트리거되어 사용자를 성공 보기 상태 ( WEB-INF / view / success.jsp ) 또는 실패 보기 상태 ( WEB-INF / view / failure.jsp)로 보냅니다.

<body>
    <h2>Click to activate account</h2>

    <form method="post" action="${flowExecutionUrl}">
        <input type="submit" name="_eventId_activate" value="activate" />
        <input type="submit" name="_eventId_cancel" value="cancel" />
    </form>
</body>

flowExecutionUrl사용하여 현재 흐름 실행 view-state 의 컨텍스트 상대 URI에 액세스합니다 .

4. 흐름 구성

다음으로 Spring Web Flow를 웹 환경에 구성합니다. Flow Registry 및 Flow Builder 서비스를 설정하여이를 수행합니다.

Flow Registry를 사용하면 흐름의 위치를 ​​지정하고 사용중인 경우 Flow Builder 서비스도 지정할 수 있습니다.

Flow Builder 서비스는 흐름을 구축하는 데 사용되는 서비스 및 설정을 사용자 지정하는 데 도움이됩니다.

사용자 정의 할 수있는 서비스 중 하나는 view-factory-creator 입니다. 보기 공장 제작자는 우리가 사용자 정의 할 수 있습니다 ViewFactoryCreator 스프링 웹 플로우에서 사용합니다. Spring MVC를 사용하고 있기 때문에 Spring MVC 구성에서 뷰 리졸버를 사용하도록 Spring Web Flow를 구성 할 수 있습니다.

예제를 위해 Spring Web Flow를 구성하는 방법은 다음과 같습니다.

@Configuration
public class WebFlowConfig extends AbstractFlowConfiguration {

    @Autowired
    private WebMvcConfig webMvcConfig;

    @Bean
    public FlowDefinitionRegistry flowRegistry() {
        return getFlowDefinitionRegistryBuilder(flowBuilderServices())
          .addFlowLocation("/WEB-INF/flows/activation-flow.xml", "activationFlow")
          .build();
    }

    @Bean
    public FlowExecutor flowExecutor() {
        return getFlowExecutorBuilder(flowRegistry()).build();
    }

    @Bean
    public FlowBuilderServices flowBuilderServices() {
        return getFlowBuilderServicesBuilder()
          .setViewFactoryCreator(mvcViewFactoryCreator())
          .setDevelopmentMode(true).build();
    }

    @Bean
    public MvcViewFactoryCreator mvcViewFactoryCreator() {
        MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator();
        factoryCreator.setViewResolvers(
          Collections.singletonList(this.webMvcConfig.viewResolver()));
        factoryCreator.setUseSpringBeanBinding(true);
        return factoryCreator;
    }
}

해당 구성에 XML을 사용할 수도 있습니다.

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="flowRegistry" ref="activationFlowRegistry"/>
</bean>

<flow:flow-builder-services id="flowBuilderServices"
  view-factory-creator="mvcViewFactoryCreator"/>

<bean id="mvcViewFactoryCreator" 
  class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers" ref="jspViewResolver"/>
</bean>

<flow:flow-registry id="activationFlowRegistry" 
  flow-builder-services="flowBuilderServices">
    <flow:flow-location id="activationFlow" path="/WEB-INF/flows/activation-flow.xml"/>
</flow:flow-registry>

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
    <property name="flowExecutor" ref="activationFlowExecutor"/>
</bean>
<flow:flow-executor id="activationFlowExecutor" 
  flow-registry="activationFlowRegistry"/>

5. 흐름 탐색

흐름을 탐색하려면 웹 앱을 시작하고 http : // localhost : 8080 / {context-path} / activationFlow로 이동 합니다. 앱을 시작하려면 Tomcat  또는 Jetty 와 같은 애플리케이션 서버에 배포 하세요.

그러면 흐름 구성에 지정된 활성화 페이지 인 흐름의 초기 페이지로 이동합니다.

 

활성화 버튼을 클릭 하여 성공 페이지로 이동할 수 있습니다 .

또는 취소 버튼을 눌러 실패 페이지로 이동합니다.

6. 결론

이 기사에서는 Spring Web Flow를 사용하는 방법에 대한 사용방법(예제)로 간단한 예제를 사용했습니다.

GitHub 에서이 기사의 전체 소스 코드와 모든 코드 스 니펫을 찾을 수 있습니다 .

참고
  • https://docs.spring.io/spring-framework/docs/current/reference/html
  • https://www.baeldung.com/spring-web-flow
반응형